🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
由于一个大型的AngularJS应用有较多组成部分,所以最好通过分层的目录结构来组织。 有两个主流的组织方式: * 按照类型优先,业务功能其次的组织方式 这种方式的目录结构看起来如下: ~~~ . ├── app │   ├── app.js │   ├── controllers │   │   ├── page1 │   │   │   ├── FirstCtrl.js │   │   │   └── SecondCtrl.js │   │   └── page2 │   │   └── ThirdCtrl.js │   ├── directives │   │   ├── page1 │   │   │   └── directive1.js │   │   └── page2 │   │   ├── directive2.js │   │   └── directive3.js │   ├── filters │   │   ├── page1 │   │   └── page2 │   └── services │   ├── CommonService.js │   ├── cache │   │   ├── Cache1.js │   │   └── Cache2.js │   └── models │   ├── Model1.js │   └── Model2.js ├── lib └── test ~~~ * 按照业务功能优先,类型其次的组织方式 如下: ~~~ . ├── app │   ├── app.js │   ├── common │   │   ├── controllers │   │   ├── directives │   │   ├── filters │   │   └── services │   ├── page1 │   │   ├── controllers │   │   │   ├── FirstCtrl.js │   │   │   └── SecondCtrl.js │   │   ├── directives │   │   │   └── directive1.js │   │   ├── filters │   │   │   ├── filter1.js │   │   │   └── filter2.js │   │   └── services │   │   ├── service1.js │   │   └── service2.js │   └── page2 │   ├── controllers │   │   └── ThirdCtrl.js │   ├── directives │   │   ├── directive2.js │   │   └── directive3.js │   ├── filters │   │   └── filter3.js │   └── services │   └── service3.js ├── lib └── test ~~~ * 当目录里有多个单词时, 使用 lisp-case 语法: ~~~ app ├── app.js └── my-complex-module    ├── controllers    ├── directives    ├── filters    └── services ~~~ * 在创建指令时,合适的做法是将相关的文件放到同一目录下 (如:模板文件, CSS/SASS 文件, JavaScript文件)。如果你在整个项目周期都选择这种组织方式, ~~~ app └── directives ├── directive1 │   ├── directive1.html │   ├── directive1.js │   └── directive1.sass └── directive2 ├── directive2.html ├── directive2.js └── directive2.sass ~~~ 那么,上述的两种目录结构均能适用。 * [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home) 采用了两种目录结构的一种更加轻量的方式。在这里,组件的单元测试与组件放置在同一目录下。在这种方式下,当改变组件时,更加容易找到对应的测试以及相关文档和用例。 ~~~ services ├── cache │   ├── cache1.js │   └── cache1.spec.js └── models ├── model1.js └── model1.spec.js ~~~ * `app.js`文件包含路由定义、配置和启动说明(如果需要的话) * 每一个 JavaScript 文件应该仅包含一个组件。文件名应该以组件名命名。 * 使用 Angular 项目模板,如 [Yeoman](http://yeoman.io/), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). 本人更倾向于第一种组织方式,因为更易于查找组件。