我正在构建一个大型Angular应用程序。我试图延迟加载依赖项。 所以app.js中的应用程序模块看起来像
testApp = angular.module('SellerDashboard', [
'ui.bootstrap',
'ngRoute',
'chieffancypants.loadingBar',
'ngAnimate',
'route-segment',
'view-segment',
'Feature1.Index',
'Feature1.My_Listings',
'Feature1.My_Listings.Directives',
'Feature2.Debug',
'Feature2.Index',
'Feature3.Index',
'Feature3.Landing'
]);
这些模块中的每一个都有子模块,它们具有进一步的依赖关系。每个模块都是单独的文件。示例文件如下
var featureApp = angular.module('Feature1.My_Listings', ['Feature1.Services', 'Common.Services', 'CommonDebug.Services','angular-intro']);
listing_app.controller('my_listing', ['$scope', 'fkPaginator', '$routeParams', 'fkLogger', '$q','fkLoaderManager',function ($scope,fkPaginator, $routeParams, fkLogger, $q,fkLoaderManager) { //do somesthing})]);
所以我的app.js没有直接依赖'Feature1.Services'模块。它依赖于Feature1.My_Listings模块(定义控制器),它依赖于服务模块。
[Feature1.Services定义服务进一步依赖于其所需的其他提供者]
现在,我不希望我的Feature1.My_Listings被加载,直到我进入实际需要在'Feature1.Services'中定义的某个控制器的页面。如果我在“My_Listings”页面,我不想加载fFeature2和功能3模块。
Implement lazy loading。上面的链接显示了如何在更改路由时使用resolve.But然后它还强制要求将所有文件放在一个模块下,即app模块,所有控制器都被定义为app.controller(“bla bla”),使用app as全局变量。但在我的情况下,我想延迟加载模块并根据路由动态包含它们。
我该如何解决?如果有人可以帮助解决如何使用requirejs实现这一点,那将是很好的。
所以对于一个非常大的应用程序,上面的方法是正确的,用于定义控制器,服务等,或者将它们分解为更小的模块,就像我做的那样是正确的方法吗?