详解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 相关文章推荐
Js 获取HTML DOM节点元素的方法小结
Apr 24 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
利用javascript打开模态对话框(示例代码)
Jan 11 Javascript
高性能JavaScript模板引擎实现原理详解
Feb 05 Javascript
js实现支持手机滑动切换的轮播图片效果实例
Apr 29 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
JavaScript框架是什么?怎样才能叫做框架?
Jul 01 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
Jul 19 Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 Javascript
JS实现匀加速与匀减速运动的方法示例
Sep 04 Javascript
JavaScript 跨域之POST实现方法
May 07 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
PHP中extract()函数的妙用分析
2012/07/11 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
用python实现面向对像的ASP程序实例
2014/11/10 Python
Python map和reduce函数用法示例
2015/02/26 Python
python实现杨辉三角思路
2017/07/14 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
python中的global关键字的使用方法
2019/08/20 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
主题酒店策划书
2014/01/28 职场文书
消防器材管理制度
2014/01/28 职场文书
运动会入场解说词
2014/02/07 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
企业投资意向书
2015/05/09 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书