亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Lazy Loading In AngularJS(懶加載)

2019-11-06 09:37:35
字體:
來源:轉載
供稿:網友

當構建大型網站或應用程序在AngularJS許多/觀點的路線,它將不會加載所有的文件,如控制器、指令等是很好的,在第一次加載。理想情況下,在第一次加載,只有文物所需要的路線的問題,將加載。這可能是在一個下載或多取決于應用程序,但是,它只會是什么需要渲染特定的路由。當用戶導航App改變路線,其他文物尚未加載,將被加載時需要有。這種潛力不僅應該加快初始頁面的負載,而且還應該導致帶寬不被浪費。這個帖子,我的目的是展示的文物如控制器和指令可以實現與AngularJS的懶加載。 為了延遲加載的文物如AngularJS控制器和指示,有兩個主要問題,必須回答如下: 1、如何在應用啟動后,對一個模塊進行懶加載的注冊 2、在應用程序中,如何選擇腳本加載的實際位置

第一個問題的結果從當前無法注冊文物后,應用程序引導,使用模塊API。換句話說,如果你想與一個已經自舉程序登記一個新的控制器,使用下面的代碼:

angular.module('app').controller('SomeLazyController', function($scope){ $scope.key = '...';});

you would get the following error when you reference the controller with the ng-controller directive:

Error: Argument ‘SomeLazyController’ is not a function, got undefined

目前,唯一的方法(我知道)登記的文物已經引導應用程序,不使用模塊的API,但使用有關的AngularJS提供者代替。 供應商基本上是被用來創建和配置的AngularJS文物實例對象。因此,為了登記一個懶惰的控制器,你可以使用controllerPRovider。同樣的,要登記一個指令,你會用compileprovider美元,登記過濾器可以使用$filterprovider,并登記等服務,你會使用提供服務。代碼將看起來像這樣的控制器和指令:

// Registering a controller after app bootstrap$controllerProvider.register('SomeLazyController', function($scope){ $scope.key = '...'; });// Registering a directive after app bootstrap$compileProvider.directive('SomeLazyDirective', function(){ return { restrict: 'A', templateUrl: 'templates/some-lazy-directive.html' }})// etc

現在與供應商的事情是,他們只有在模塊配置。因此,一個參考他們將不得不保持,以便他們可以用來以后登記懶惰文物。作為一個例子,為了獲得相關的供應商,您可以設置您的應用程序模塊類似以下:

appModule.js:(function(){ var app = angular.module('app', []); app.config(function($routeProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) { app.controllerProvider = $controllerProvider; app.compileProvider = $compileProvider; app.routeProvider = $routeProvider; app.filterProvider = $filterProvider; app.provide = $provide; // Register routes with the $routeProvider });})();

You would then be able to define a lazy controller as follows:

angular.module('app').controllerProvider.resgister('SomeLazyController', function($scope){ $scope.key = '...';});

仍然存在的問題,但是,在那里加載的懶惰文物,如上述控制器,將發生使用您的腳本加載器的選擇。目前,只有一個地方,這可以發生“干凈”,它是在“解決”屬性的路由定義。 當定義一個路由使用routeprovider美元,你可以指定一個可選的關鍵/工廠地圖的依賴,應注入路由控制器。使用“解決”屬性指定此依賴關系圖如下:

$routeProvider.when('/about', {templateUrl:'views/about.html', controller:'AboutViewController' resolve:{key:factory}

依賴映射中的“鍵”將是依賴項的名稱,而“工廠”將是一個字符串,該字符串是作為依賴項的現有服務的別名,或作為其依賴項的返回值的可注入函數。現在,如果函數返回一個承諾,承諾將得到解決之前的路線是“渲染”(可以這么說)。因此,必須檢索異步的依賴,如延遲加載的文物,可以使用一個依賴圖的函數返回的承諾,將一次解決懶惰的文物已被加載的檢索。這確保了所有的懶惰文物加載之前的路線呈現。一個路由定義中指定要使用的懶惰依賴美元scr有一件事,也應該指出的是,由于承諾的決議將最有可能的AngularJS的上下文之外發生的,如在上面的例子中,它在scriptjs美元背景下發生的,AngularJS已經被明確告知當諾言已經解決(這么說)。這是通過承諾內的應用方法$rootscopeas在實現:

$rootScope.$apply(function(){ deferred.resolve();});

如果承諾不解決在應用$rootscope,將不會對初始頁面加載渲染。 現在所有這些應用程序模塊定義,將產生以下:

appModule.js:(function(){ var app = angular.module('app', []); app.config(function($routeProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) { app.controllerProvider = $controllerProvider; app.compileProvider = $compileProvider; app.routeProvider = $routeProvider; app.filterProvider = $filterProvider; app.provide = $provide; // Register routes with the $routeProvider $routeProvider.when('/', {templateUrl:'views/home.html'}); $routeProvider.when('/about', {templateUrl:'views/about.html', resolve:{deps:function($q, $rootScope) { var deferred = $q.defer(); var dependencies = [ 'controllers/AboutViewController.js', 'directives/some-directive.js' ]; $script(dependencies, function() { // all dependencies have now been loaded by $script.js so resolve the promise $rootScope.$apply(function() { deferred.resolve(); }); }); return deferred.promise; }}}); });})();

Finally you can bootstrap the app using code similar to the following if using $script.js:

$script(['appModule.js'], function(){ angular.bootstrap(document, ['app'])});

這些都或多或少地要在AngularJS實現懶加載的步驟??傊?,您將首先定義應用程序模塊以保持相關提供商的實例。然后,您將定義您的懶惰的文物登記自己使用的供應商,而不是模塊的API。然后使用一個“解析”函數返回你的路由定義中的一個承諾,你將加載所有的懶惰的文物和解決的承諾,一旦他們已經加載。這將確保所有的懶惰文物將提供相關的路線之前呈現。另外,別忘了解決承諾內rootscope美元。美元的申請,如果該決議將在AngularJS發生的事情。然后,您將創建一個“引導”的劇本,第一次加載的應用程序模塊,在引導程序。最后,你會鏈接到你的索引HTML文件的啟動腳本。 看到一個Runnable實例使用異步模塊定義與RequireJS,在示例應用程序一看。請注意,但是,示例應用程序只是一個非?;镜模?,不生產質量)的例子。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品激情国产视频| 国产精品福利无圣光在线一区| 国产91在线播放九色快色| 久久久女女女女999久久| 欧美电影免费观看电视剧大全| 最新91在线视频| 欧美激情va永久在线播放| xxav国产精品美女主播| 97精品国产97久久久久久| 欧洲亚洲免费在线| 美女999久久久精品视频| 国产精品一香蕉国产线看观看| 亚洲a级在线播放观看| 欧美亚洲视频在线观看| 亚洲一区二区三区四区视频| 日本成人激情视频| 久久精品福利视频| 亚洲自拍欧美另类| 26uuu国产精品视频| 国产91在线播放| 538国产精品一区二区在线| 欧美一级视频一区二区| 久久久久久高潮国产精品视| www.xxxx精品| 国产香蕉精品视频一区二区三区| 亚洲激情中文字幕| 亚洲成人精品久久| 精品露脸国产偷人在视频| 日韩极品精品视频免费观看| 欧美日韩亚洲一区二区| 成人网页在线免费观看| 国产成人综合久久| 欧美综合国产精品久久丁香| 国产日本欧美视频| 国产精品久久久久久超碰| 久热在线中文字幕色999舞| 欧美成人精品在线| 国产精品aaa| 国产丝袜精品第一页| 久久亚洲国产精品成人av秋霞| 欧美成人精品在线观看| 亚洲最大av网站| 亚洲男人天堂九九视频| 97碰在线观看| 久久亚洲精品网站| 国产成人自拍视频在线观看| 国产一区av在线| 亚洲第一区在线观看| 欧美色另类天堂2015| 欧美一级电影免费在线观看| 久久影视三级福利片| 日韩在线观看免费| 91久久精品一区| 欧美激情日韩图片| 亚洲三级 欧美三级| 菠萝蜜影院一区二区免费| 亚洲国产精品99| 久久久久久久999精品视频| 欧美大片第1页| 92国产精品久久久久首页| 久久亚洲精品成人| 亚洲国产成人久久综合一区| 国产在线视频欧美| 久久精品视频在线| 九九精品在线观看| 国产精品普通话| 亚洲精品久久久久久久久久久久久| 国内精品小视频| 在线观看国产精品91| 国产精品一区二区av影院萌芽| 成人免费在线视频网站| 精品久久久久久久久久久久久久| 亚洲aaaaaa| 日韩激情片免费| 亚洲乱码国产乱码精品精天堂| 97在线视频国产| 日日骚av一区| 欧美一级免费看| 91黑丝在线观看| 日韩av在线网址| 国产亚洲激情在线| 亚洲成人av片| 欧美性猛交xxxx黑人猛交| 欧美视频在线看| 久久久99久久精品女同性| 91在线视频精品| 日本老师69xxx| 国产欧美一区二区三区四区| 精品亚洲精品福利线在观看| 欧美猛男性生活免费| 亚洲精品电影网站| 亚洲视频专区在线| 国产精品香蕉国产| 狠狠躁夜夜躁久久躁别揉| 91精品久久久久久久久久久| 亚洲欧美精品一区二区| 欧美一区二区色| 久久久99免费视频| 91精品国产乱码久久久久久久久| 久久偷看各类女兵18女厕嘘嘘| 久久夜色精品亚洲噜噜国产mv| 国产日产亚洲精品| 亚洲黄页网在线观看| 国产精品久久色| 欧美成人第一页| 欧美另类精品xxxx孕妇| 国产在线观看精品| 中文字幕一区二区精品| 国产精品国内视频| 国产精品久久久久高潮| 成人免费午夜电影| 国产精品羞羞答答| 亚洲精品999| 国产成人精品综合久久久| 欧美日韩中国免费专区在线看| 欧美一级高清免费播放| 亚洲精品资源美女情侣酒店| 国内偷自视频区视频综合| 一区二区三区 在线观看视| 久久精品电影一区二区| 久久久国产一区二区| 91国产视频在线| 久久天堂av综合合色| 91精品国产91久久久久久吃药| 欧美大片网站在线观看| 欧美黄色www| 日韩精品免费一线在线观看| 日韩欧美a级成人黄色| 欧美激情视频在线免费观看 欧美视频免费一| 91九色视频导航| 色噜噜亚洲精品中文字幕| 日韩网站免费观看高清| 午夜精品久久久久久99热| 欧美日韩在线视频一区| 欧美成人精品xxx| 亚洲国产精品久久久久| 亚洲精品456在线播放狼人| 久久久噜噜噜久久中文字免| 97久久精品国产| 在线国产精品视频| 亚洲一区av在线播放| 欧美乱妇40p| 亚洲级视频在线观看免费1级| 国产精品日韩在线观看| 欧美高清在线观看| 久久影视免费观看| 色爱av美腿丝袜综合粉嫩av| 在线观看欧美视频| 国产精品久久久久久av福利| 中文字幕成人在线| 欧美日韩亚洲国产一区| 成人激情黄色网| 97热精品视频官网| 欧美插天视频在线播放| 欧美有码在线观看| 日韩中文字幕免费视频| 不卡伊人av在线播放| 美女福利精品视频| 日韩成人久久久| 45www国产精品网站| 亚洲国产成人精品久久久国产成人一区| 国产精品福利小视频| xvideos成人免费中文版| 97精品视频在线播放|