摘要:是一個根據(jù)需要來加載文件的框架可避免不必要的文件加載提升網(wǎng)頁瀏覽速度。但是今天給大家介紹另外一個基于的插件,,同樣可以實(shí)現(xiàn)按需加載。
在用angular做一些比較大的項(xiàng)目的時候,如果像以前一樣,在首頁引入一大堆js文件話,無疑會造成首次加載消耗很多的時間,對用戶體驗(yàn)非常不好,所以按需加載就應(yīng)運(yùn)而生了,在需要用的時候才加載,這樣很高效。有些js框架可以實(shí)現(xiàn),比圖RequireJS ,seaJS。是一個根據(jù)需要來加載 js文件的 JavaScript框架,可避免不必要的js文件加載,提升網(wǎng)頁瀏覽速度。 但是今天給大家介紹另外一個基于angular的插件,ocLazyLoadjs,同樣可以實(shí)現(xiàn)按需加載。在angular中運(yùn)用ocLazyLoadjs實(shí)現(xiàn)按需加載,可以在一下幾個方面進(jìn)行運(yùn)用: 1)在ui-route路由配置中加載 resolve:{ deps:["$ocLazyLoad",function($ocLazyLoad){ return $ocLazyLoad.load([所需加載的文件]);//路徑一定要正確 }] } 2)在控制器中動態(tài)加載,需要引入$ocLazyLoad $ocLazyLoad.load([所需加載的文件]); 3)依賴加載 angular.module("myapp", [[ 所需加載的文件 ]]) 4)在模板template中加載 $ocLazyLoadProvider.config({ modules: [{ name: "lazyload", files: [ "所需加載的文件" ] }] }) 下面結(jié)合一個dome,詳細(xì)說說 目錄如下:
index.html
Title this is head!{{num}}this is footer!
main.js
在main.js中配置了目錄的路由,當(dāng)點(diǎn)擊目錄一時,會加載目錄一的內(nèi)容,對應(yīng)的控制器,服務(wù)文件當(dāng)點(diǎn)擊目錄二的時候,會加載目錄二所對應(yīng)的模板,控制器,服務(wù)
基于uiRouter的resolve是在加載controller和template之前所執(zhí)行的一系列操作,它幫助我們初始化我們所要前往的那一個視圖。只有rsolved(操作完成),controller才會被實(shí)例化。因此,我們可以在resolve步驟里面加載我們所需要的controller,以及需要用到的服務(wù)。
目錄一對應(yīng)的控制器,服務(wù)是在路由配置里面加載的
目錄二對應(yīng)的控制器,服務(wù)是在模板中加載的
var menuCtr=function($scope){ $scope.menus=[ {txt:"目錄1",sref:"menu1"}, {txt:"目錄2",sref:"menu2"}, ]; } menuCtr.$injector=["$scope"]; var app=angular.module("app",["ui.router","oc.lazyLoad"]); app.controller("menuCtr",menuCtr); //ui—route的路由配置 app.config(["$stateProvider","$urlRouterProvider","$ocLazyLoadProvider",function($stateProvider,$urlRouterProvider,$ocLazyLoadProvider){ $urlRouterProvider.otherwise("/"); $stateProvider.state("menu1",{ url:"/menu1", templateUrl:"views/menu1.html", resolve:{ deps:["$ocLazyLoad",function($ocLazyLoad){ return $ocLazyLoad.load(["./controller/menuCtr1.js","./service/menu1Service.js"]); }] } }).state("menu2",{ url:"/menu2", templateUrl:"views/menu2.html", }) $ocLazyLoadProvider.config({ modules: [{ name: "lazyload", files: [ "./controller/menuCtr2.js", "./service/menu2Service.js" ] }] }) }]);
首頁時加載的文件
當(dāng)點(diǎn)擊目錄一時的加載
當(dāng)點(diǎn)擊目錄二時加載
我們在目錄一對應(yīng)的控制中加載目錄一下的子目錄所對應(yīng)的路由,通過在控制器中動態(tài)加載的方式
var menuCtr1=function($scope,$ocLazyLoad){ $scope.menuSon=[ {txt:"二級目錄一",sref:"menu1.menuSon1"}, {txt:"二級目錄二",sref:"menu1.menuSon2"} ]; $scope.flag="fath"; $ocLazyLoad.load([ "./route/router.js"http://注意此處的路徑是相對于main.js ]); $scope.$broadcast("msg", $scope.menuSon); } menuCtr1.$injector=["$scope","$ocLazyLoad"]; angular.module("app",[]).controller("menuCtr1",menuCtr1)
源碼地址:https://github.com/hubingg/an...
本文如有不對的地方,歡迎指出來
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/83333.html
摘要:想同時實(shí)現(xiàn)這些目標(biāo),就必須有一套按需加載的機(jī)制,頁面上展現(xiàn)的內(nèi)容和所有需要依賴的文件,都可以根據(jù)業(yè)務(wù)邏輯需要按需加載。最近都是基于做開發(fā),所以本文主要圍繞提供的各種機(jī)制,探索全面實(shí)現(xiàn)按需加載的套路。注意必須設(shè)置,否則變化以后,不截獲。 在進(jìn)行有一定規(guī)模的項(xiàng)目時,通常希望實(shí)現(xiàn)以下目標(biāo):1、支持復(fù)雜的頁面邏輯(根據(jù)業(yè)務(wù)規(guī)則動態(tài)展現(xiàn)內(nèi)容,例如:權(quán)限,數(shù)據(jù)狀態(tài)等);2、堅(jiān)持前后端分離的基本原則...
摘要:自己英語一般,水平有限,獻(xiàn)上原文地址,還有我翻譯的中文地址,歡迎大家勘誤下面是自己的一點(diǎn)感想先說一下,我們知道,前端優(yōu)化有這么幾步,第一步首先呢我們知道,一個應(yīng)用要依賴好多條文件,而瀏覽器加載完一條,要執(zhí)行完這條才加載下一條,所以呢,就很慢 自己英語一般,水平有限,獻(xiàn)上原文地址,還有我翻譯的中文地址,歡迎大家勘誤 下面是自己的一點(diǎn)感想 先說一下webpack,我們知道,前端優(yōu)化有這么幾...
摘要:懶加載也叫延遲加載,即在需要的時候進(jìn)行加載,隨用隨載。路由的懶加載按需加載的寫法效果按需加載會在頁面第一次請求的時候,把相關(guān)路由組件塊的添加上非按需加載則會把所有的路由組件塊的包打在一起。當(dāng)業(yè)務(wù)包很大的時候建議用路由的按需加載懶加載。 懶加載也叫延遲加載,即在需要的時候進(jìn)行加載,隨用隨載。在單頁應(yīng)用中,如果沒有應(yīng)用懶加載,運(yùn)用webpack打包后的文件將會異常的大,造成進(jìn)入首頁時,需要...
摘要:最近一段時間在學(xué)習(xí),由于覺得直接使用它需要加載很多的文件,因此想使用來實(shí)現(xiàn)異步加載,并動態(tài)注入控制器。手動啟動,特別說明此處的不是那個框架,而是的一個手動啟動框架的函數(shù)中完成了各模塊的初始化,并且引入了。 最近一段時間在學(xué)習(xí)angularjs,由于覺得直接使用它需要加載很多的js文件,因此想使用requirejs來實(shí)現(xiàn)異步加載,并動態(tài)注入控制器。簡單搜索了下發(fā)現(xiàn)好多教程寫的都很復(fù)雜,所...
摘要:第一種方式是使用模塊加載器,如果你使用加載器的話,路由在加載子路由模塊時也是用的作為模塊加載器。還需注意的是,想要使用還需像這樣去注冊它你當(dāng)然可以在里使用任何標(biāo)識,不過路由模塊使用標(biāo)識,所以最好也使用相同。 原文鏈接:Here is what you need to know about dynamic components in?Angular showImg(https://se...
閱讀 3081·2021-11-24 10:47
閱讀 3831·2021-11-02 14:43
閱讀 2228·2021-09-26 10:15
閱讀 2254·2021-09-08 09:35
閱讀 560·2019-08-30 12:45
閱讀 2781·2019-08-29 17:04
閱讀 3214·2019-08-26 14:05
閱讀 1259·2019-08-26 12:10