我应该在哪里放置AngularJS工厂和服务?

Jor*_*est 11 javascript html5 angularjs

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

快速提问:我应该把工厂和服务放在哪里?我要求的是,工厂和服务的访问权限将在单个控制器的范围之外访问,并且具有一些在单个控制器范围内的工具和服务.

Jor*_*est 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
    ??? ...
Run Code Online (Sandbox Code Playgroud)

(PSST!如果您想知道,Brian Ford是AngularJS团队的一员,那么他的回答似乎非常合法.)

增加(2013年4月24日)

这就是:Yeoman是一个很棒的工具,用于为大型功能性Angular应用程序生成具有适当目录结构的应用程序.它甚至包含了GruntBower!

附录(2015年3月1日)

评论通过PaoloCargnin,谷歌实际上建议不同的结构,通过详见本文件.结构应如下所示:

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...
Run Code Online (Sandbox Code Playgroud)

  • 这不是Google记录的方式.我建议你遵循这个结构https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub (2认同)