习惯了 seajs 的异步加载方式,也想着 angular 也能一样使用异步加载,可是事实不随人愿。html
angularjs 和 requirejs 同样,使用的是预先加载的方式组织模块(这和 seajs 的懒加载正好相反),当一个单页面应用的模块愈来愈多时,也就意味着须要预加载的模块也会愈来愈多,这也许也就说明了 angular 更适合用来开发轻应用。git
路由我使用了angular-ui-router,模块加载器是 requirejsangularjs
//路由 { 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应用如何实现按需加载github