AngularJS项目中如何实现按需加载js文件?

 我来答
育知同创教育
2016-03-07 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
使用angularjs + requirejs就可以实现js文件的按需加载。
实现代码如下:
define(['app','navData'], function (app) {

app.config(function($stateProvider, $urlRouterProvider, $controllerProvider, navData){
app.registerController = $controllerProvider.register;
app.loadJs = function(js){
return function($rootScope, $q){
var def = $q.defer(), deps=[];

angular.isArray(js) ? (deps = js) : deps.push(js);
require(deps,function(){
$rootScope.$apply(function(){
def.resolve();
});
});
return def.promise;
};
}

$urlRouterProvider.otherwise('/memory');
angular.forEach(navData, function(it){
var st = it.state.split(/\./gi),
ctrlPath = 'controllers/' + st[0],
ctrlName = 'ctrl.' + st[0]
;
$stateProvider.state(st[0],{
url : '/' + st[0],
templateUrl : 'tpls/' + st[0] + '.html',
controller : ctrlName,
resolve:{
deps:app.loadJs(ctrlPath)
}
});
})
});
});
羁撂1784
2015-09-16 · 超过51用户采纳过TA的回答
知道答主
回答量:123
采纳率:0%
帮助的人:107万
展开全部
用过RequireJS+AngularJS实施,但感觉没有必要用AMD的模式加载JS文件。
1、AMD的加载看起来不错,但在最终的生产环境中,JS文件还是建议压缩成一个文件,这样的效果可能更快;
2、AngularJS本身就可以写成模块来进行加载,如果嫌管理不方便,那么,看看自己项目中文件夹的排列,文件的命名等,这些方式来管理前端代码感觉更方便;
AMD的加载看起来不错,但在通常情况下,感觉没有太大的必要使用AMD去加载JS、CSS、HTML等。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式