習慣了 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
});
