萧江做网站,成都企业网站建设公司电话,frontpage2003制作网页教程,重置wordpress最近因为项目的比较大#xff0c;需要加载的js文件较多#xff0c;为了提高首屏页面的加载速度#xff0c;需要对js文件进行按需加载#xff0c;然后网上参考了一些资料#xff0c;自己也深入研究一番之后#xff0c;实现了按需加载控制器js文件及指令js文件的效果#…最近因为项目的比较大需要加载的js文件较多为了提高首屏页面的加载速度需要对js文件进行按需加载然后网上参考了一些资料自己也深入研究一番之后实现了按需加载控制器js文件及指令js文件的效果思路如下1、借助ui-router里面的resolve属性来实现预加载2、需要借助$controllerProvider动态去注册控制器$compileProvider动态去注册指令3、需要借助$q来帮助我们实现异步加载具体步骤如下所示 1、在我们定义的app在定义app.config的js文件内模块上挂载注册控制器和指令的属性如下所示 app.register { //注意这里的$controllerProvider是内置注册控制器的属性$compileProvider是内置的注册指令的属性controller: $controllerProvider.register,directive: $compileProvider.directive}2、借助$q定义一个异步加载js文件的方法在定义路由的js文件内 app.loadMyJs function(js){return function($rootScope, $q){var deffer $q.defer(),deps[];angular.isArray(js) ? (deps js) : deps.push(js);require(deps,function(){$rootScope.$apply(function(){deffer.resolve();});});return deffer.promise;};} 3、借助路由里面的resolve属性进行配置需要加载的控制器文件及指令文件在定义路由的js文件内 .state(view1,{url: /view1,templateUrl: temp/partial1.html,controller: MyCtrl1,resolve:{ //需要动态加载的控制器及指令js文件其它js文件以此类推deps:app.loadMyJs([./controllers/my-ctrl-1,./directives/loading])}}) 4、通过第一步先挂载在app上的属性来进行动态注册控制器or指令 //注册控制器对应的控制器js文件内app.register.controller(MyCtrl1, function ($scope,$css,$rootScope) {//控制器里面的内容}); //注册指令对应的指令js文件内app.register.directive(loading,function (){ return { restrict: AE, replace: true, template: div classmask ng-showisLoadingspanloading/span/div } }); 如果有服务or过滤器需要按需加载也是类似的方法另外如果是公共的服务指令or过滤器等不需要进行按需加载的文件就可以使用普通的angular.module()的方式来定义即可 最后这只是实现按需加载js文件中的一种思路希望对您有所帮助。 转载于:https://www.cnblogs.com/ks-wang/p/6417692.html