最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angularjs ocLazyLoad分步加載js文件實(shí)例

 更新時(shí)間:2017年01月17日 11:04:46   作者:Ricky_Huang  
本篇文章主要介紹了angularjs ocLazyLoad分步加載js文件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

用angular有一段時(shí)間了,平日里只顧著寫(xiě)代碼,沒(méi)有注意到性能優(yōu)化的問(wèn)題,而今有時(shí)間,于是捋了捋,講學(xué)習(xí)過(guò)程記錄于此:

問(wèn)題描述:由于采用angular做了網(wǎng)頁(yè)的單頁(yè)面應(yīng)用,需要一次性在主布局中將所有模塊需要引用到的js都引入.對(duì)于比較小的項(xiàng)目,這是可行的,但是對(duì)于大的項(xiàng)目,一旦js文件較多,在頁(yè)面首次加載時(shí)就引入所有js文件,無(wú)疑會(huì)延緩頁(yè)面加載的速度,造成不良額用戶體驗(yàn).那么分布加載(按需加載)就顯得很有必要了.

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
  <meta charset="UTF-8">
  <title>ui-router-lazyload</title>
  <link rel="stylesheet" href="../bootstrap/dist/css/bootstrap.min.css">
  <script src="../angular/angular.min.js"></script>
  <script src="../angular-ui-router/release/angular-ui-router.min.js"></script>
  <script src="../oclazyload/dist/ocLazyLoad.min.js"></script>
  <script src="index.js"></script>
</head>
<style>
  body{
    font-family: "Microsoft JhengHei UI";
  }
  .navigator{
    width: 500px;margin: 0 auto
  }
  .navigator li{
    color: #000;font-size: 14px;
  }
</style>
<body ng-controller="myController">
<ul class="navigator nav nav-pills">
  <li role="presentation" class="active"><a href="#home" ng-click="isActive($event)">主頁(yè)</a></li>
  <li role="presentation" class="active"><a href="#child">子頁(yè)面</a></li>
  <li role="presentation" class="active"><a href="#third" ng-click="isActive($event)">三級(jí)頁(yè)面</a></li>
</ul>
<div ui-view style="width: 500px;margin: 50px auto 0"></div>
</body>
</html>

js代碼:

var myApp=angular.module("myApp",["ui.router","oc.lazyLoad"]);
myApp.config(function ($stateProvider,$urlRouterProvider) {
  $urlRouterProvider.when("","/home");
  $stateProvider.state('home',{
    url:"/home",
    templateUrl: 'homepage.html',
    resolve:{
      loadMyCtrl:['$ocLazyLoad',function ($ocLazyLoad) {
        return $ocLazyLoad.load({
          name:"homeApp",
          files:["homepage.js"]
        })
      }]
    }
  });
  $stateProvider.state('index',{
    url:"/home",
    templateUrl:'index.html'
  });
  $stateProvider.state('child',{
    url:"/child",
    templateUrl:'child.html',
    resolve:{
      loadMyCtrl:function ($ocLazyLoad) {
        return $ocLazyLoad.load({
          name:'childApp',
          files:["child.js"]
        })
      }
    }
  })
  $stateProvider.state('third',{
    url:"/third",
    templateUrl:'third.html',
    resolve:{
      loadMyCtrl:function ($ocLazyLoad) {
        return $ocLazyLoad.load({
          name:'grandApp',
          files:["third.js"]
        })
      }
    }
  })
  
});
myApp.controller("myController",function ($state,$scope,$location) {
  $scope.turnPage=function () {
    // $state.go('home');
    $location.path('/home')
  }
});

頁(yè)面初始效果如下圖,打開(kāi)瀏覽器控制臺(tái),可以看到child.js以及third.js在頁(yè)面載入時(shí)并沒(méi)有加載:

 頁(yè)面初始化:

當(dāng)點(diǎn)擊子頁(yè)面和三級(jí)頁(yè)面時(shí),會(huì)依次加載所依賴的js文件.實(shí)現(xiàn)分步加載.

點(diǎn)擊子頁(yè)面:

三級(jí)頁(yè)面:

 填坑:網(wǎng)上關(guān)于angular按需加載的文章也蠻多的,也有人使用的是requireJS來(lái)進(jìn)行這個(gè)操作,而且ocLazyLoad的使用方法也有很多.之前按照一些文檔的方法,在配置路由時(shí),加了下面的藍(lán)色代碼,頁(yè)面是能跳轉(zhuǎn),但是homepage.html的js代碼卻執(zhí)行了兩次,難道是控制器加載了兩次么.對(duì)于這個(gè)坑,我還在探索中,也希望大家能夠發(fā)表意見(jiàn)或者建議.

$stateProvider.state('home',{
     url:"/home",
     controller:'homeController',
     templateUrl: 'homepage.html',
     resolve:{
       loadMyCtrl:['$ocLazyLoad',function ($ocLazyLoad) {
         return $ocLazyLoad.load({
           name:"homeApp",
           files:["homepage.js"]
         })
       }]
     }
  });

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

深泽县| 灵璧县| 津南区| 建瓯市| 云阳县| 米易县| 日喀则市| 交城县| 黄大仙区| 永德县| 建始县| 邢台市| 济阳县| 庆城县| 财经| 婺源县| 云南省| 永年县| 江西省| 五寨县| 五大连池市| 吉首市| 浦北县| 乌兰浩特市| 全州县| 曲麻莱县| 涟水县| 右玉县| 威海市| 大安市| 淮北市| 杭州市| 虎林市| 井陉县| 绵阳市| 长寿区| 年辖:市辖区| 湖口县| 新巴尔虎右旗| 乳山市| 澎湖县|