angular中按需加載js


  按需加載估計是大家在使用angular之后最想解決的問題吧,因為angular的依賴機制,導致了必須在第一次加載的時候就加載所有js文件,小項目還好,稍大一點的項目如果有上百個js文件,不管是從效率還是寫法都相當不好。所以這次我使用了$ocLazyLoad來實現懶加載。文檔看這里

1.引入js文件,並注入$ocLazyLoad服務

<script src="lib/ocLazyLoad.min.js"></script>

2.對$ocLazyLoad進行基礎配置

angular.module('starter')
.config(["$provide", "$compileProvider", "$controllerProvider", "$filterProvider",
    function ($provide, $compileProvider, $controllerProvider, $filterProvider) {
        app.controller = $controllerProvider.register;
        app.directive = $compileProvider.directive;
        app.filter = $filterProvider.register;
        app.factory = $provide.factory;
        app.service = $provide.service;
        app.constant = $provide.constant;
    }
])

3.根據模塊配置路由

$stateProvider
    .state('login', {
        url: '/login',    
        templateUrl: 'template/login/login.html',
        controller:'loginCtrl',
        resolve:{
            deps:["$ocLazyLoad",function($ocLazyLoad){
                return $ocLazyLoad.load("template/login/login.js");
            }]
        }
    })

   關於第三方js文件ocLazyLoad就無能為力了,它是用來懶加載angular module的,而不是第三方的js庫。所以如果考慮到這些可以使用requireJS來加載,之所以在這個項目中沒有用過是因為ocLazyLoad比起來更小一些,壓縮過后只有15k大小,而且requireJS移植性不好且侵入性高(其實我也不知道什么意思,哈哈哈)。還有一點主要的是這個一次配置不用處處引用,挺契合angular模塊化的特點的。至於requireJS的使用,只有下次用過了再來補充吧。

-----------------------------2016-12-15--------------------------------------

  上一次使用ocLazyLoad是在ionic項目中,這次在angularWEB項目中使用,搭建的時候出了angular is not defined的問題,怎么找也解決不掉問題,結果最后改變了一下ui-router和oclazyload的引入位置,問題解決~記住一定要先引入ui-router再引入oclazyload啊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM