【发布时间】:2015-07-01 03:06:15
【问题描述】:
我正在概述一个基于 Angular 的相当复杂的应用程序的架构。所以我从 angular-seed 项目开始,这似乎是一个很好的起点。令我困扰的是,角度应用程序本质上涉及预先加载所有内容。使用脚本加载器,似乎没有一个干净的方法。
我来自backbone.js 背景,使用require.js 进行基于路由器回调的延迟加载是很安静的。角度路线的定义如下:
// Declare app level module which depends on views, and components
angular.module('myApp', [
'ngRoute'
]).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when({templateURL:'../tmpl.html',controller:'view1Ctrl'})
.when({templateURL:'../tmpl.html',controller:'view1Ctrl'})
.otherwise({redirectTo: '/view1'});
}]);
现在在这里,$routeProvider.when({templateURL:'../tmpl.html',controller:'view1Ctrl'}) 我想延迟加载控制器和模板。我很想使用类似的东西:
$routeProvider.when({templateURL:'../tmpl.html',controller:require('view1Ctrl'})
使用 browserify 但它似乎并不干净,甚至不需要。我知道这个问题已经以某种方式被问过好几次了,但我还没有找到明确的答案。
我的偏好是使用 browserify,因为它支持浏览器中备受喜爱的 cjs 模块。
【问题讨论】:
-
正如你所说,由于 Angular.js 的性质,有一种“非 hacky 方式”可以做到这一点。您必须在某些时候公开
$controllerProvider.register、$provide.factory和$compileProvider.directive,才能在运行状态下使用它们。但是,这是一个黑客。 :( -
另外,我认为这是相关的:stackoverflow.com/questions/21742495/…
标签: javascript angularjs browserify