components/ |- MyButton.vue |- VueTable.vue |- Icon.vue好的
components/ |- BaseButton.vue |- BaseTable.vue |- BaseIcon.vue紧密耦合的组件名称
components/ |- TodoList.vue |- TodoItem.vue |- TodoButton.vue好的
components/ |- TodoList.vue |- TodoListItem.vue |- TodoListItemButton.vue组件名称中单词的顺序
components/ |- ClearSearchButton.vue |- ExcludeFromSearchInput.vue |- LaunchOnStartupCheckbox.vue |- RunSearchButton.vue |- SearchInput.vue |- TermsCheckbox.vue好的
components/ |- SearchButtonClear.vue |- SearchButtonRun.vue |- SearchInputQuery.vue |- SearchInputExcludeGlob.vue |- SettingsCheckboxTerms.vue |- SettingsCheckboxLaunchOnStartup.vue测试
/vue-project |-- /src | |-- /components | | |-- MyComponent.vue | |-- /views | | |-- HomeView.vue |-- /tests | |-- /components | | |-- MyComponent.spec.js | |-- /views | | |-- HomeView.spec.js |-- package.json |-- ...方法 2:内联测试文件
/vue-project |-- /src | |-- /components | | |-- MyComponent.vue | | |-- MyComponent.spec.js | |-- /views | | |-- HomeView.vue | | |-- HomeView.spec.js |-- package.json |-- ...扁平式方法
/src |-- /components | |-- BaseButton.vue | |-- BaseCard.vue | |-- PokemonList.vue | |-- PokemonCard.vue |-- /composables | |-- usePokemon.js |-- /utils | |-- validators.js |-- /layout | |-- DefaultLayout.vue | |-- AdminLayout.vue |-- /plugins | |-- translate.js |-- /views | |-- Home.vue | |-- PokemonDetail.vue |-- /router | |-- index.js |-- /store | |-- index.js |-- /assets | |-- /images | |-- /styles |-- /tests | |-- ... |-- App.vue |-- main.js原子设计
|-- /components | |-- /atoms | | |-- AtomButton.vue | | |-- AtomIcon .vue | |-- /molecules | | |-- MoleculeSearchInput.vue | | |-- MoleculePokemonThumbnail.vue | |-- /organisms | | |-- OrganismPokemonCard.vue | | |-- OrganismHeader.vue | |-- /templates | | |-- TemplatePokemonList.vue | | |-- TemplatePokemonDetail.vue |-- /pages | |-- PageHome.vue | |-- PagePokemonDetail.vue |-- /composables | |-- usePokemon.js |-- /utils | |-- validators.js |-- /layout | |-- LayoutDefault.vue | |-- LayoutAdmin.vue |-- /plugins | |-- translate.js |-- /router | |-- index.js |-- /store | |-- index.js |-- /assets | |-- /images | |-- /styles |-- /tests | |-- ... |-- App.vue |-- main.js模块
/src |-- /core | |-- /components | | |-- BaseButton.vue | | |-- BaseIcon.vue | |-- /models | |-- /store | |-- /services | |-- /views | | |-- DefaultLayout.vue | | |-- AdminLayout.vue | |-- /utils | | |-- validators.js |-- /modules | |-- /pokemon | | |-- /components | | | |-- PokemonThumbnail.vue | | | |-- PokemonCard.vue | | | |-- PokemonListTemplate.vue | | | |-- PokemonDetailTemplate.vue | | |-- /models | | |-- /store | | | |-- pokemonStore.js | | |-- /services | | |-- /views | | | |-- PokemonDetailPage.vue | | |-- /tests | | | |-- pokemonTests.spec.js | |-- /search | | |-- /components | | | |-- SearchInput.vue | | |-- /models | | |-- /store | | | |-- searchStore.js | | |-- /services | | |-- /views | | |-- /tests | | | |-- searchTests.spec.js |-- /assets | |-- /images | |-- /styles |-- /scss |-- App.vue |-- main.ts |-- router.ts |-- store.ts |-- /tests | |-- ... |-- /plugins | |-- translate.js功能分割设计
/src |-- /app | |-- App.vue | |-- main.js | |-- app.scss |-- /processes |-- /pages | |-- Home.vue | |-- PokemonDetailPage.vue |-- /widgets | |-- UserProfile.vue | |-- PokemonStatsWidget.vue |-- /features | |-- pokemon | | |-- CatchPokemon.vue | | |-- PokemonList.vue | |-- user | | |-- Login.vue | | |-- Register.vue |-- /entities | |-- user | | |-- userService.js | | |-- userModel.js | |-- pokemon | | |-- pokemonService.js | | |-- pokemonModel.js |-- /shared | |-- ui | | |-- BaseButton.vue | | |-- BaseInput.vue | | |-- Loader.vue | |-- lib | | |-- api.js | | |-- helpers.js |-- /assets | |-- /images | |-- /styles |-- /router | |-- index.js |-- /store | |-- index.js |-- /tests | |-- featureTests.spec.js这种设置非常适合大型项目,因为它使得项目更容易扩展和保持整洁。要了解有关这些层如何工作的更多详细信息,请查看官方的功能分割设计文档。
方法 | 描述 | 优点 | 缺点 |
扁平式方法 | 简单的结构,适合小项目或概念验证。 | - 易于实施 - 最小设置 | - 不可扩展 - 随着项目增长而混乱 |
原子设计 | 基于组件复杂性的分层结构。 | - 可扩展 - 有组织 - 可重用组件 | - 管理层面的开销 - 复杂的设置 |
模块 | 封装功能的模块化结构。 | - 可扩展 - 封装特性 | - 可能存在重复 - 可能变得复杂 |
功能分割设计 | 将项目组织成功能层和切片。 | - 高内聚 - 明确的功能分离 | - 初始复杂性 - 需要彻底规划 |
微前端 | 应用程序的每个部分都可以单独部署。 | - 独立部署 - 可扩展 | - 复杂性高 - 需要团队之间的协调 |