AngularJS中的按需加载ocLazyLoad插件应用;
一、前言
ocLoayLoad是AngularJS的模块按需加载器。一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题。但是当我们的网站渐渐庞大起来,这样子的加载策略让网速初始化速度变得越来越慢,用户体验不好。二来,分模块加载易于团队协作,减低代码冲突。
二、按需加载的对象
各个Controller模块、Directive模块、Server模块、template模板,其实这些都是一些 .js文件或者 .html文件 。
三 、按需加载的场景
1 路由加载(resolve/uiRouter)
基于uiRouter的resolve是在加载controller和template之前所执行的一系列操作,它帮助我们初始化我们所要前往的那一个视图。只有be solved(操作完成),controller才会被实例化。因此,我们可以在resolve步骤里面加载我们所需要的controller。
.state('weiindex', {
url: "/weiindex",
cache: false,
templateUrl: "templates/weiindex.html",
controller: 'weiindexCtrl',
resolve: {
loadMyCtrl: function($ocLazyLoad){
return $ocLazyLoad.load('js/weiindexCtrl.js');
}
}
})
其中,'js/weiindexCtrl.js'里面放着一个我们所需要的controller
angular.module('myApp')
.controller('weiindexCtrl', ['$scope', function($scope){
//...
}])
2 依赖加载
在依赖项里面导入我们所需要的一系列模块(这里有一层'[ ]'符合哦)
angular.module('touchModule', [[
'lib/file/touch.js',
'lib/file/iscroll.js'
]]).controller('touchModuleCtrl', ['$scope', function($scope){
//...
}])
3 Cotroller里动态加载
angular.module('myApp')
.controller('weiindexCtrl', ['$scope','$ocLazyLoad', function($scope, $ocLazyLoad){
$scope.loadBootstrap = function(){
$ocLazyLoad.load([
'lib/bootstrap/dist/js/bootstrap.js',
'lib/bootstrap/dist/css/bootstrap.css'
])
}
var unbind = $scope.$on('ocLazyLoad.fileLoaded', function(e, file){
$scope.bootstrapLoaded = true;
console.log('下载boot完成');
unbind();
})
}])
4 template包含加载(config)
如何处理我们所加载的html模板里面嵌套的controller呢?这里需要oc-lazy-load指令和$ocLazyLoadProvider的配置
/*template A.html*/
<h1>hi i am hzp </h1>
<div oc-lazy-load="touchModule">
<div ng-controller="touchModuleCtrl">
<span>{{test}}</span><br/>
<div ui-grid="touchOptions" class="touchStyle"></div>
</div>
</div>
</div>
$ocLazyLoadProvider.config({
modules: [{
name: 'touchModule',
files: [
'js/touchModule.js'
]
}]
})
四、如何组织按需加载
分路由、按功能来区分、打包成不同的多个或单个controller.directive.server模块
AngularJS中的按需加载ocLazyLoad插件应用;的更多相关文章
- AngularJS中的按需加载ocLazyLoad
欢迎大家讨论与指导 : ) 初学者,有不足的地方希望各位指出 一.前言 ocLoayLoad是AngularJS的模块按需加载器.一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题.但是当 ...
- antd图标库按需加载的插件实现
前景概要 antd是阿里出品的一款基于antd的UI组件库,使用简单,功能丰富,被广泛应用在中台项目开发中,虽然也出现了彩蛋事故,但不能否认antd本身的优秀,而我们公司在实际工作中也大量使用antd ...
- webpack中实现按需加载
webpack中的require.ensure()可以实现按需加载资源包括js,css等,它会给里面require的文件单独打包,不和主文件打包在一起,webpack会自动配置名字,如0.js,1.j ...
- .NET中的按需加载/延迟加载 Lazy<T>
业务场景: 在项目开发中,经常会遇到特定的对象使用的加载问题,有的实例对象我们创建之后并非需要使用,只是根据业务场景来调用,所以可能会导致很多无效的实例加载 延迟初始化出现于.NET 4.0,主要用于 ...
- vue中路由按需加载的几种方式
使用vue-cli构建项目后,我们会在Router文件夹下面的index.js里面引入相关的路由组件,如: import Hello from '@/components/Hello' import ...
- AngularJS中如果ng-src 图片加载失败怎么办
我们知道AngularJS加载图片的方法是用技术分享加ng-src标签,例如: <img ng-src="{{currentUrl}}"/> 其中currentUrl为 ...
- 配合angularjs中interceptor一劳永逸的加载$ionicloading的方法
在我们日常的项目开发中,每当页面需要和服务端存在交互的时候,为了界面的友好,我们都会在界面中给个loading的加载图标,当从服务端获取到数据或者已经把本地数据送到服务端并且得到相应的回应的时候我们就 ...
- nuxt中iview按需加载配置
在plugins/iview.js中修改 初始代码如下 import Vue from 'vue' import iView from 'iview' import locale from 'ivie ...
- Angular (SPA) WebPack模块化打包、按需加载解决方案完整实现
文艺小说-?2F,言情小说-?3F,武侠小说-?9F long long ago time-1-1:A 使用工具,long long A ago time-1-2:A 使用分类工具,long long ...
随机推荐
- sql 中的注释
1.单行注释 “-- ” 即:两个中滑线加一个空格 2.多行注释 "/* ... */" 示例: -- 单行注释 /* 多行注释*/ create table test(id i ...
- java 对象
对象可以看成是静态属性和动态属性的封装体.静态属性——成员变量:动态属性——方法. 1.汇编语言是对机器语言的抽象. 2.面向过程的语言是对汇编语言的抽象.属性和方法分离,不是封装在一起的,复用性 ...
- Spring MVC 常用Jar包
spring:http://maven.springframework.org/release/org/springframework/spring/ jackson:http://repo1.mav ...
- Oracle EBS 查询物料报错
- 第八章 SQL高级处理 8-2 GROUPING运算符
一.同时得到合计行 合计行是不指定聚合键时得到的汇总结果. UNION ALL与UNION的不同之处是它不会对结果进行排序,因此比UNION性能更好. 二.ROLLUP——同时得出合计和小计 GR ...
- 一些简单的SQL Server服务器监控
1:磁盘活动的一些监控 指标 吞吐量:IOPS,存储子系统每秒能提供多少次I/O 吞吐量,MB/S,I/O子系统每秒能提供多少MB 延时:每个I/O请求占用多少时间 队列长度:队列中有多少IO请求在等 ...
- Oracle案例13—— OGG-01163 Oracle GoldenGate Delivery for Oracle, reprpt01.prm
由于虚拟机宿主机重启,导致很多虚拟机服务需要重点关注,其中一个DG的从库和另一个report库有OGG同步,所以这里再系统恢复后检查OGG状态的时候,果然目标端的REPLICAT进程处于abend状态 ...
- 分别用C/C++ 和 C#实现简单的观察者模式
网上找了很多关于观察者模式的代码例子和文章,都写的比较复杂,我个人还是喜欢从易到难,今天自己参考网上资料,也写了一个简单观察者模式的例子,简单的复习了一下Observer 模式,Observer 模式 ...
- Vue安装以及Vue项目创建以及Vue Devtools安装
这几天一直在学习Vue.js框架. 因为以前没有前端项目的经验,也没学过什么前端框架,所以,对于vue.js的学习有些不知所措. 在vue.js官网看教程,按照教程指点,可以不用脚手架开发,也可以搭建 ...
- Memorize and recite an important historical speech
Memorize and recite an important historical speech memorize['memәraiz]v.[亦作memorise] 记住, 记忆 historic ...