ui-router中使用ocLazyLoad和resolve的具体方法


Posted in Javascript onOctober 18, 2017

1.AngularJS按需加载

AngularJS主要应用开发SPA(Single Page Application)项目,所以在小型项目中,services、filters和controllers都在index.html中加载。Google给的AngularJS官方的angular-seed和angular-phonecat都是这样。

对于复杂一点,大型的项目,如果所有的内容一开始就加载,对首页的性能影响比较大,即使静态javascript文件使用CDN,对性能还是有很大的影响。所有需要引入按需加载机制,而Angular1.x版本中,ocLazyLoad是一个不错的按钮加载解决方案。

2.ocLazyLoad的功能

ocLazyLoad: your solution for lazy loading with Angular 1.x

入门可以参照:ocLazyLoad快速入门,代码也非常简单:

1.引入ocLazyLoad文件,可以使用npm和bower来进行安装

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script src="libs/angular-ui-router/angular-ui-router.js"></script>
<script src="libs/ocLazyLoad/ocLazyLoad.js"></script>

2.注入 oc.lazyLoad模块

var myApp = angular.module("MyApp", ["oc.lazyLoad"]);

3. 在控制器中加载一个指定的模块

myApp.controller("MyCtrl", function($ocLazyLoad) {
 $ocLazyLoad.load('testModule.js');
});

在实际项目中service和controller文件都是通过ocLazyLoad加载,并且是放在resolve中加载。代码示例如下:

.state('detail',{
   url:"/detail/:bookId",
   templateUrl:"/templates/detail.html",
   controller:"DetailController",
   controllerAs:'ctrl',
   resolve:{
    load:['$ocLazyLoad',function($ocLazyLoad){
     return $ocLazyLoad.load([
      'services/dataService.js'
      ]);
    }],
    currentBook:['$ocLazyLoad','$stateParams','$injector',function($ocLazyLoad,$stateParams,$injector){
     var bookId=$stateParams.bookId;
     return $ocLazyLoad.load('services/booksService.js').then(function(){
      return $injector.get('booksService').getBookById(bookId);;
     });

    }]
   }
  })

3.resolve属性

resolve在state配置参数中,是一个对象(key-value),每一个value都是一个可以依赖注入的函数,并且返回的是一个promise(当然也可以是值,resloved defer)。

4.resolve中加载service

resolve中加载services,但是请求都是异步的,返回的顺序不是按照顺序来的。在currentBook中需要调用booksService里面的getBookById()方法。这个时候虽然在load里面已经加载dataService.js,但是在currentBook中是无法使用getBookById()方法,所以在currentBook对象中,所以必须重新加载booksService.js。这个时候就需要$injector中的get()方法。$injector

5.图书列表和详细页demo

ui-router中使用ocLazyLoad和resolve的具体方法

6.参考网址

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

Javascript 相关文章推荐
JavaScript 学习笔记(十六) js事件
Feb 01 Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 Javascript
Highcharts入门之基本属性
Aug 02 Javascript
微信小程序 wx.request(object) API详解及实例代码
Sep 30 Javascript
微信小程序 textarea 详解及简单使用方法
Dec 05 Javascript
codeMirror插件使用讲解
Jan 16 Javascript
canvas绘制万花筒效果(代码分享)
Jan 20 Javascript
JavaScript基础之this详解
Jun 04 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 Javascript
angular异步验证器防抖实例详解
Mar 31 Javascript
VUE长按事件需求详解
Oct 18 #Javascript
vue router仿天猫底部导航栏功能
Oct 18 #Javascript
Node做中转服务器转发接口
Oct 18 #Javascript
Vue组件之Tooltip的示例代码
Oct 18 #Javascript
JS正则表达式完美实现身份证校验功能
Oct 18 #Javascript
详解vue项目首页加载速度优化
Oct 18 #Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 #Javascript
You might like
PHP array_push 数组函数
2009/12/26 PHP
php&amp;mysql 日期操作小记
2012/02/27 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
python开发简易版在线音乐播放器
2017/03/03 Python
python绘制多个曲线的折线图
2020/03/23 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
Python threading的使用方法解析
2019/08/28 Python
多个python文件调用logging模块报错误
2020/02/12 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
护士实习鉴定范文
2013/12/22 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
少年闰土教学反思
2014/02/22 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
企业投资意向书
2015/05/09 职场文书
交通安全温馨提示语
2015/07/14 职场文书