11

我正在努力根据最佳实践清晰地构建我的 AngularJS 应用程序,其中包括将控制器和应用程序分离到不同的脚本文件中。

快速提问:我应该把我的工厂和服务放在哪里?我问的是在单个控制器范围之外访问的工厂和服务以及在单个控制器范围内访问的一些工厂和服务。

4

1 回答 1

8

更新:下面的直接答案不再正确。请参阅此答案的最新附录(2015 年 3 月 1 日编写)。

知道了!根据 Brian Ford 关于构建 Huuuuuuuge Angular Apps的文章,最佳实践似乎是将服务和工厂连接到单独文件中的应用程序,如下所示:

root-app-folder
├── index.html
├── scripts
│   ├── controllers
│   │   └── main.js
│   │   └── ...
│   ├── directives
│   │   └── myDirective.js
│   │   └── ...
│   ├── filters
│   │   └── myFilter.js
│   │   └── ...
│   ├── services
│   │   └── myService.js
│   │   └── ...
│   ├── vendor
│   │   ├── angular.js
│   │   ├── angular.min.js
│   │   ├── es5-shim.min.js
│   │   └── json3.min.js
│   └── app.js
├── styles
│   └── ...
└── views
    ├── main.html
    └── ...

(PSST!如果您想知道,Brian Ford 是 AngularJS 团队的一员,所以他的回答似乎很合理。)

补充(2013 年 4 月 24 日)

这就是:Yeoman是一个很棒的工具,可以为大型功能性 Angular 应用程序生成具有适当目录结构的应用程序。它甚至包含Grunt & Bower

附录(2015 年 3 月 1 日)

根据PaoloCargnin的评论 Google 实际上推荐了一种不同的结构,如本文所述。结构应如下所示:

sampleapp/
    app.css
    app.js //top-level configuration, route def’ns for the app
    app-controller.js
    app-controller_test.js
    components/
        adminlogin/                                
            adminlogin.css //styles only used by this component
            adminlogin.js //optional file for module definition
            adminlogin-directive.js                         
            adminlogin-directive_test.js        
        private-export-filter/
            private-export-filter.js
            private-export-filter_test.js
        userlogin/
            somefilter.js
            somefilter_test.js
            userlogin.js
            userlogin.css                
            userlogin.html                
            userlogin-directive.js
            userlogin-directive_test.js
            userlogin-service.js
            userlogin-service_test.js                
    index.html
    subsection1/
        subsection1.js
        subsection1-controller.js
        subsection1-controller_test.js
        subsection1_test.js                         
        subsection1-1/                        
            subsection1-1.css
            subsection1-1.html
            subsection1-1.js
            subsection1-1-controller.js
            subsection1-1-controller_test.js
            subsection1-2/                        
    subsection2/
        subsection2.css
        subsection2.html
        subsection2.js
        subsection2-controller.js
        subsection2-controller_test.js
    subsection3/
        subsection3-1/
etc...
于 2013-04-05T17:09:23.333 回答