日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

angularJS+requireJS实现controller及directive的按需加载

發布時間:2023/11/29 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 angularJS+requireJS实现controller及directive的按需加载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近因為項目的比較大,需要加載的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 class='mask' ng-show='isLoading'><span>loading</span></div>"
      }
    }); ?

如果有服務or過濾器需要按需加載也是類似的方法,另外如果是公共的服務,指令or過濾器等不需要進行按需加載的文件就可以使用普通的angular.module()的方式來定義即可;

最后這只是實現按需加載js文件中的一種思路,希望對您有所幫助。

?

轉載于:https://www.cnblogs.com/ks-wang/p/6417692.html

總結

以上是生活随笔為你收集整理的angularJS+requireJS实现controller及directive的按需加载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。