最近因为项目的比较大,需要加载的js文件较多,为了提高首屏页面的加载速度,需要对js文件进行按需加载,然后网上参考了一些资料,自己也深入研究一番之后,实现了按需加载控制器js文件及指令js文件的效果;

思路如下
1、借助ui-router里面的resolve属性来实现预加载
2、需要借助$controllerProvider动态去注册控制器,$compileProvider动态去注册指令
3、需要借助$q来帮助我们实现异步加载,具体步骤如下所示;
1、在我们定义的app(在定义app.config()的js文件内)模块上挂载注册控制器和指令的属性,如下所示
app.register = { //注意这里的$controllerProvider是内置注册控制器的属性,$compileProvider是内置的注册指令的属性
controller: $controllerProvider.register,
directive: $compileProvider.directive
}
2、借助$q定义一个异步加载js文件的方法(在定义路由的js文件内)
app.loadMyJs = function(js){
return function($rootScope, $q){
var deffer = $q.defer(),
deps=[];
angular.isArray(js) ? (deps = js) : deps.push(js);
require(deps,function(){
$rootScope.$apply(function(){
deffer.resolve();
});
});
return deffer.promise;
};
}
3、借助路由里面的resolve属性,进行配置需要加载的控制器文件及指令文件(在定义路由的js文件内)
.state('view1',{
url: '/view1',
templateUrl: 'temp/partial1.html',
controller: 'MyCtrl1',
resolve:{
//需要动态加载的控制器及指令js文件,其它js文件以此类推
deps:app.loadMyJs(['./controllers/my-ctrl-1','./directives/loading'])
}
})
4、通过第一步先挂载在app上的属性来进行动态注册控制器or指令
//注册控制器(对应的控制器js文件内)
app.register.controller('MyCtrl1', function ($scope,$css,$rootScope) {
//控制器里面的内容
});
//注册指令(对应的指令js文件内)
app.register.directive("loading",function (){
return {
restrict: "AE",
replace: true,
template: "<div class='mask' ng-show='isLoading'><span>loading</span></div>"
}
});
如果有服务or过滤器需要按需加载也是类似的方法,另外如果是公共的服务,指令or过滤器等不需要进行按需加载的文件就可以使用普通的angular.module()的方式来定义即可;
最后这只是实现按需加载js文件中的一种思路,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# requirejs
# angularjs按需加载
# directive
# requirejs按需加载angularjs文件实例
# 探索angularjs+requirejs全面实现按需加载的套路
# 小心!AngularJS结合RequireJS做文件合并压缩的那些坑
# angular.js + require.js构建模块化单页面应用的方法步骤
# 简单谈谈require模块化jquery和angular的问题
# requirejs AngularJS结合使用示例解析
# 加载
# 按需
# 所示
# 不需要
# 以此类推
# 较多
# 这只
# 比较大
# 来实现
# 大家多多
# 为了提高
# 就可以
# 上挂
# 实现了
# 器及
# 网上
# brush
# register
# controller
# return
相关文章:
建站主机选哪家性价比最高?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何打造高效商业网站?建站目的决定转化率
c# 服务器GC和工作站GC的区别和设置
建站之星与建站宝盒如何选择最佳方案?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何零基础在云服务器搭建WordPress站点?
如何确认建站备案号应放置的具体位置?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何通过wdcp面板快速创建网站?
,想在网上投简历,哪几个网站比较好?
如何快速生成ASP一键建站模板并优化安全性?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
做企业网站制作流程,企业网站制作基本流程有哪些?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
如何在万网开始建站?分步指南解析
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何配置WinSCP新建站点的密钥验证步骤?
独立制作一个网站多少钱,建立网站需要花多少钱?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何生成腾讯云建站专用兑换码?
如何做静态网页,sublimetext3.0制作静态网页?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
常州企业网站制作公司,全国继续教育网怎么登录?
图册素材网站设计制作软件,图册的导出方式有几种?
广德云建站网站建设方案与建站流程优化指南
如何快速搭建虚拟主机网站?新手必看指南
,网站推广常用方法?
焦点电影公司作品,电影焦点结局是什么?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
代购小票制作网站有哪些,购物小票的简要说明?
制作网站的公司有哪些,做一个公司网站要多少钱?
北京的网站制作公司有哪些,哪个视频网站最好?
高端网站建设与定制开发一站式解决方案 中企动力
内部网站制作流程,如何建立公司内部网站?
PHP 500报错的快速解决方法
孙琪峥织梦建站教程如何优化数据库安全?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何获取开源自助建站系统免费下载链接?
名字制作网站免费,所有小说网站的名字?
重庆市网站制作公司,重庆招聘网站哪个好?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
安云自助建站系统如何快速提升SEO排名?
定制建站方案优化指南:企业官网开发与建站费用解析
建站之星24小时客服电话如何获取?
如何配置IIS站点权限与局域网访问?
兔展官网 在线制作,怎样制作微信请帖?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
*请认真填写需求信息,我们会在24小时内与您取得联系。