2013-04-05 62 views
11

我正在根据最佳实践清楚地构建我的AngularJS应用程序,其中包括将控制器和应用程序分隔成不同的脚本文件。我应该在哪里放置AngularJS工厂和服务?

快速问题:我应该在哪里放置我的工厂和服务?我在询问有工厂&的服务,这些服务将被访问在单个控制器的范围之外,也有一些属于单个控制器范围内的服务。

回答

8

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

Got it!据布赖恩·福特对Building 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如果你想知道,布赖恩·福特。在AngularJS团队的一员,所以他的回答似乎很合法的)

加(2013年4月24日)

这只是:Yeoman是与正确的目录生成应用一个极好的工具结构大功能的Angular应用程序。它甚至有Grunt & Bower包装!

附录(2015年3月1日)

根据经由PaoloCargnina comment,谷歌实际上建议不同的结构,通过如this document详述。结构应如下所示:

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... 
+2

这不是谷歌如何记录它。我建议你按照这个结构https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub – PaoloCargnin 2015-02-27 11:34:29