国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJS動態(tài)加載模塊和依賴的方法分析

2019-11-19 19:01:16
字體:
供稿:網(wǎng)友

本文實(shí)例講述了AngularJS動態(tài)加載模塊和依賴的方法。分享給大家供大家參考,具體如下:

前言

由于AngularJS是單頁面應(yīng)用框架,在正常的情況下,會在訪問頁面的時候?qū)⑺械腃SS、JavaScript文件都加載進(jìn)來。文件不多的時候,頁面啟動速度倒不會影響太多。但是一旦文件數(shù)太多或者加載的第三方庫比較大的時候,就會影響頁面啟動速度。因此對于應(yīng)用規(guī)模大、文件數(shù)比較多或者加載的第三方庫比較大的時候,采用動態(tài)加載JS或者動態(tài)加載模塊會極大提升頁面的啟動速度。本文將介紹如何利用ocLazyLoad實(shí)現(xiàn)動態(tài)加載。

準(zhǔn)備

AngularJS動態(tài)加載依賴第三方庫:ocLazyLoad。ocLazyLoad是一個第三方庫,支持AngularJS動態(tài)加載module、service、directive以及靜態(tài)文件。

安裝ocLazyLoad

可通過npm或者bower進(jìn)行安裝

npm install oclazyloadbower install oclazyload

將ocLazyLoad module 添加到你的應(yīng)用中

angular.module('myApp',['oc.lazyLoad']);

配置 ocLazyLoad

你可以在 config函數(shù)中配置 $ocLazyLoadProvider,配置文件如下

.config(['$ocLazyLoadProvider', function($ocLazyLoadProvider){  $ocLazyLoadProvider.config({    debug: true,    events: true,    modules: [      {        name: 'TestModule',        files: ['test.js']      }    ]  })}])

debug: 用來開啟debug模式。布爾值,默認(rèn)是false。當(dāng)開啟debug模式時,$ocLazyLoad會打印出所有的錯誤到console控制臺上。
events:當(dāng)你動態(tài)加載了module的時候,$ocLazyLoad會廣播相應(yīng)的事件。布爾值,默認(rèn)為false。
modules:用于定義你需要動態(tài)加載的模塊。定義每個模塊的名字需要唯一。
modules必須要用數(shù)組的形式,其中files也必須以數(shù)組的形式存在,哪怕只需要加載一個文件

在路由當(dāng)中加載module

.config(['$routeProvider', function($routeProvider) {    $routeProvider.otherwise('/index');    $routeProvider.when('/index', {      templateUrl: 'index.html',      controller: 'IndexController',      resolve: { // resolve 里的屬性如果返回的是 promise對象,那么resolve將會在view加載之前執(zhí)行        loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {          // 在這里可以延遲加載任何文件或者剛才預(yù)定義的modules          return $ocLazyLoad.load('TestModule'); //加載剛才定義的TestModule          /*return $ocLazyLoad.load([  // 如果要加載多個module,需要寫成數(shù)組的形式            'TestModule',            'MainModule'            ]);*/        }]      }    })}])

resolve設(shè)置的屬性可以被注入到Controller當(dāng)中。如果resolve返回的是promise對象的話,那么它們將在控制器加載以及$routeChangeSuccess被觸發(fā)之前執(zhí)行。

$ocLazyLoad就是利用這個原理hack,進(jìn)行動態(tài)加載。

resolve的值可以是:

* key,the value of key 是會被注入到Controller的依賴的名字;
* factory,即可以是一個service的名字,也可以是一個返回值,它是會被注入到控制器中的函數(shù)或可以被resolve的promise對象。

通過這樣的配置,就可以實(shí)現(xiàn)了AngularJS動態(tài)加載模塊和依賴。但是ocLazyLoad提供的功能更加豐富,不止動態(tài)加載模塊和依賴,還能動態(tài)加載service,diretive等。更多的功能,可以訪問[ocLazyLoad官網(wǎng)](https://oclazyload.readme.io)

希望本文所述對大家AngularJS程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 方正县| 闸北区| 扎鲁特旗| 宁强县| 全椒县| 宣武区| 徐州市| 木兰县| 临潭县| 永川市| 彰武县| 巴林右旗| 新乐市| 聂荣县| 南丹县| 苍山县| 华亭县| 军事| 五常市| 曲阜市| 淮滨县| 双流县| 介休市| 崇义县| 卢湾区| 岱山县| 象州县| 胶南市| 济阳县| 公主岭市| 乌拉特前旗| 夹江县| 合肥市| 通渭县| 聊城市| 仲巴县| 维西| 新闻| 乌兰察布市| 本溪市| 天镇县|