详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖


Posted in Javascript onMarch 01, 2017

最近在使用AngularJS,发现AngularJS菜鸟教程上的东西太过于基础,很多东西都没有提及,比如今天的一个关于前端的优化问题,懒加载。通过路由实现地址分发的时候,再通过懒加载模式加载你所需的文件,比如是相关的controller,就是js,这样有利于提高首次加载的负担。

下面就是一个懒加载的实现过程。

实现的过程主要是引用3个主要的JS文件:

<script src="angular/1.4.8/angular/angular.min.js"></script>
<script src="angular/ui-router/release/angular-ui-router.min.js"></script>
<script src="angular/oclazyload/src/ocLazyLoad.min.js"></script>

然后通过 APP 配置,将依赖的脚本进行注入操作:

var app = angular.module('pkcms', ["ui.router", "oc.lazyLoad"]);

app.config(["$provide", "$compileProvider", "$controllerProvider", "$filterProvider",


 
function ($provide, $compileProvider, $controllerProvider, $filterProvider) {




 app.controller = $controllerProvider.register;




 app.directive = $compileProvider.directive;




 app.filter = $filterProvider.register;




 app.factory = $provide.factory;




 app.service = $provide.service;




 app.constant = $provide.constant;


 
}]);



// 按模块化加载其他的脚本文件




app.constant('Modules_Config', [




 {





 name: 'treeControl',





 serie: true,





 files: [






 "Scripts/angular-bootstrap/ui-bootstrap-tpls-0.14.3.min.js"





 ]<br>}]);




app.config(["$ocLazyLoadProvider","Modules_Config",routeFn]);




function routeFn($ocLazyLoadProvider,Modules_Config){




 $ocLazyLoadProvider.config({




 debug:false,




 events:false,




 modules:Modules_Config


 });

};

以上是初始化动态加载的配置过程。

接着是建立路由:

"use strict"
app.config(["$stateProvider","$urlRouterProvider",routeFn]);
function routeFn($stateProvider,$urlRouterProvider){
 $urlRouterProvider.otherwise("/main");
 $stateProvider
 .state("main",{
 url:"/main",
 templateUrl:"views/main.html",
 controller:"mainCtrl",
 controllerAs:"main",
 resolve:{
 deps:["$ocLazyLoad",function($ocLazyLoad){
 return $ocLazyLoad.load("controllers/main.js");
 }]
 }
 })
 .state("adminUser",{
 url:"/adminUser",
 templateUrl:"views/adminUser.html",
 controller:"adminUserCtrl",
 controllerAs:"adminUser",
 resolve:{
 deps:["$ocLazyLoad",function($ocLazyLoad){
 return $ocLazyLoad.load("controllers/adminUser.js");
 }]
 }
 })
};

最后是按路由配置的在对应目录下建2个HTML页面文件和2个JS文件用做测试

main.html

<div>
 {{main.value}}
</div>

adminUser.html

<div>
 {{adminUser.value}}
</div>

main.js 

/**
 * mainCtrl
 * Created by pkcms.cn on 2016/6/24.
 */
(function () {
 "use strict"
 app.controller("mainCtrl", mainCtrlFn);
 function mainCtrlFn() {
 this.value = "Hello World";
 }
}())

adminUser.js

/**
 * adminUserCtrlFn
 * Created by pkcms.cn on 2016/6/24.
 */
(function () {
 app.controller('adminUserCtrl',adminUserCtrlFn);
 function adminUserCtrlFn() {
 this.value = "welcome to admin user";
 }
}());

demo下载:angularjs-oclazyload_3water.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery Tools tab(幻灯片)
Jul 14 Javascript
jQuery on方法传递参数示例
Dec 09 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
Jul 27 Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 Javascript
JS实现添加,替换,删除节点元素的方法
Jun 30 Javascript
浅谈jquery页面初始化的4种方式
Nov 27 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
基于JS实现快速读取TXT文件
Aug 25 Javascript
Javascript仿京东放大镜的效果
Mar 01 #Javascript
Ajax实现不刷新取最新商品
Mar 01 #Javascript
Angular1.x复杂指令实例详解
Mar 01 #Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 #Javascript
Angular1.x自定义指令实例详解
Mar 01 #Javascript
轻松学习Javascript闭包
Mar 01 #Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 #Javascript
You might like
利用static实现表格的颜色隔行显示
2006/10/09 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
python列表操作使用示例分享
2014/02/21 Python
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
py-charm延长试用期限实例
2019/12/22 Python
Python实现一个论文下载器的过程
2021/01/18 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
长青弘远的面试题
2012/06/09 面试题
保安岗位职责
2014/02/21 职场文书
2014年学前班工作总结
2014/12/08 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
岁月神偷观后感
2015/06/11 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
Python经常使用的一些内置函数
2022/04/11 Python
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL