我尝试使用 AngularJS 构建一个模块化应用程序。我的第一个想法是使用这种文件夹结构按功能对每个模块进行分组:
/core
controllers.js
directives.js
app.js
/modules
/users
controllers.js
directives.js
/invoices
controllers.js
directives.js
/messages
controllers.js
directives.js
...
请注意,“核心”文件夹包含始终位于应用程序中的基本功能。其他模块可以独立添加或删除。
由于我的应用程序很大,我也想使用延迟加载。我实施了这个解决方案:http://ify.io/lazy-loading-in-angularjs/ http://ify.io/lazy-loading-in-angularjs/在我看来这实际上是最简单的方法。问题是它只对控制器、服务、指令进行延迟加载......而不是对 AngularJS 模块进行延迟加载。
我知道还有另一种方法可以延迟加载 Angular 模块(http://blog.getelementsbyidea.com/load-a-module-on-demand-with-angularjs/ http://blog.getelementsbyidea.com/load-a-module-on-demand-with-angularjs/)但我认为它太老套了,因为它使用了 Angular 的核心方法。
我的问题是:在我的例子中,为每个模块使用不同的 AngularJS 模块是否有意义,如下所示:
angular.module('core', ['ngRoute', 'users', 'invoices', 'messages'])
angular.module('users')
angular.module('invoices')
angular.module('messages')
这种方法的优点是什么? AngularJS 模块目前仅适用于 Angular 的第三方模块吗?
我问这个是因为 AngularJS 2.0 将支持本机延迟加载。来自 Google 的 Miško Hevery 表示“[你]应该按视图分组,因为视图在不久的将来将会延迟加载”,并且我们应该为每个应用程序使用一个模块,请在此处查看:
对于大型应用程序来说,只为我的应用程序使用一个模块是否正确,如下所示:
angular.module('core', ['ngRoute']);
然后根据路由或视图延迟加载我的控制器、服务和指令?