AngularJS 實現按需異步加載


習慣了 seajs 的異步加載方式,也想着 angular 也能同樣使用異步加載,但是事實不隨人願。

angularjs 和 requirejs 一樣,使用的是預先加載的方式組織模塊(這和 seajs 的懶加載正好相反),當一個單頁面應用的模塊越來越多時,也就意味着需要預加載的模塊也會越來越多,這也許也就說明了 angular 更適合用來開發輕應用。


正式開始

路由我使用了angular-ui-router,模塊加載器是 requirejs

//路由
{
    state : 'login',
    templateUrl : 'login/login.html',
    controller : 'loginCtrl',
    resolve: {
        realCtrl : function ($q) {
            var def = $q.defer();
            require(['/features/login/login.js'], function (loginCtrl) {
                def.resolve(loginCtrl)
                $rootScope.$apply();
            });
            return def.promise;
        }
    }
},

// 獲得$controllerProvider
app.config(function($controllerProvider) {
    app.registerController = $controllerProvider.register;
    // ...
})

// loginControler
app.registerController('loginCtrl', function ($scope) {
   // do something
});

參考

angular應用如何實現按需加載


免責聲明!

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



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