Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖


Posted in Javascript onNovember 25, 2018

什么是ui-router

ui-router是AngularUI库最有用的组件之一(AngularUI库由AngularJS社区构建)。它是一个第三方路由框架,允许通过状态机制组织接口,而不是简单的URL路由。

 什么是ocLoayLoad

ocLoayLoad是AngularJS的模块按需加载器。按需加载的对象

 

简单说就是哪个页面需要什么资源,在加载哪个页面的时候在加载,而不是把所有的资源放在模板里。

 三个主要文件

<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>

推荐

1:首先下载插件 可以百度搜索,这里我推荐在线测试的 https://www.bootcdn.cn/angular-ui-router/

2:github url :https://github.com/366065186/angularjs-oclazyload

    3:Angularjs https://code.angularjs.org/

html文件(部分代码)简单说明

1:首先页面引入上面三个文件

2:在a标签中写入 ui-sref='链接路径' 标签

2:在页面定义一块区域用于显示链接内容 <ui-view></ui-view>

Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖

 js代码:

首先在module中注入

'ui.router', 'oc.lazyLoad'然后在通过config进行路由配置。

(function () {
 var app = angular.module("app", ['ui.router', 'oc.lazyLoad']) 
 
 // 配置路由
 app.config(function ($stateProvider) {
  $stateProvider
  // 个人中心主页
   .state('admin/index', {
    url: '/admin/index',
    templateUrl: "/admin/index",
    // 加载页面需要的js
    resolve: load(['/static/js/transfer/adminlte/index.js'])
   })
   // 分类管理列表
   .state('class/index', {
    url: '/class/index',
    templateUrl: "/class/index",
    resolve: load([
     '/static/js/transfer/adminlte/classification/index.js'
    ])
   })
   // 轮播图列表
   .state('roll', {
    url: '/roll',
    templateUrl: "/roll",
    resolve: load([
     '/static/js/transfer/adminlte/broadcat.js'
    ])
   })
   // 验证码列表
   .state('code', {
    url: '/code',
    templateUrl: "/code",
    resolve: load([
     '/static/js/transfer/adminlte/code.js'
    ])
   })
   // 电影列表
   .state('movie', {
    url: '/movie',
    templateUrl: "/movie",
    resolve: load([
     '/static/js/transfer/adminlte/movie/movie.js'
    ])
   })
   // 电影编辑
   .state('movie/edit', {
    url: '/movie/edit',
    templateUrl: "/movie/edit",
    resolve: load([
     '/static/js/transfer/adminlte/movie/movieedit.js'
    ])
   })
 });

 // 在加载该模块的时候调用$state.go('admin/index');,以激活admin/index状态。
 app.run(function ($state) {
  $state.go('admin/index');
 });
/*
   * 通过$ocLazyLoad加载页面对应的所需的JS数据
   * 通过$q异步加载JS文件数据其中使用的是promise【保护模式】
  */
function load(srcs, callback) {
 return {
  deps: [
   '$ocLazyLoad', '$q',
   function ($ocLazyLoad, $q) {
    var deferred = $q.defer();
    var promise = false;
    srcs = angular.isArray(srcs) ? srcs : srcs.split(/\s+/);
    if (!promise) {
     promise = deferred.promise;
    }
    angular.forEach(srcs,
     function (src) {
      promise = promise.then(function () {
       angular.forEach([],
        function (module) {
         if (module.name === src) {
          src = module.module ? module.name : module.files;
         }
        });
       return $ocLazyLoad.load(src);
      });
     });
    deferred.resolve();
    return callback ? promise.then(function () {
     return callback();
    }) : promise;
   }
  ]
 };
}
})();

AngularJS路由设置对象参数规则:

属性 类型 描述
template string 在ng-view中插入简单的html内容
templateUrl string 在ng-view中插入html模版文件
controller string,function / array 在当前模版上执行的controller函数
controllerAs string 为controller指定别名
redirectTo string,function 重定向的地址
resolve object 指定当前controller所依赖的其他模块

 效果图:

Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖

总结

以上所述是小编给大家介绍的Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
JavaScript将数组转换成CSV格式的方法
Mar 19 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
js 动态校验开始结束时间的实现代码
May 25 Javascript
js实现金山打字通小游戏
Jul 24 Javascript
antd日期选择器禁止选择当天之前的时间操作
Oct 29 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
详解Vue CLI 3.0脚手架如何mock数据
Nov 23 #Javascript
详解js静态检查工具eslint配置文件
Nov 23 #Javascript
详解小程序不同页面之间通讯的解决方案
Nov 23 #Javascript
创建echart多个联动的示例代码
Nov 23 #Javascript
详解Angular模板引用变量及其作用域
Nov 23 #Javascript
vue使用better-scroll实现下拉刷新、上拉加载
Nov 23 #Javascript
详解Vue2.0组件的继承与扩展
Nov 23 #Javascript
You might like
session 的生命周期是多长
2006/10/09 PHP
编写PHP的安全策略
2006/10/09 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
vue项目实现多语言切换的思路
2020/09/17 Javascript
python访问类中docstring注释的实现方法
2015/05/04 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
python 穷举指定长度的密码例子
2020/04/02 Python
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
总监职责范文
2013/11/09 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
文明倡议书范文
2014/04/15 职场文书
小学五年级学生评语
2014/04/22 职场文书
市场营销计划书
2015/01/17 职场文书
新郎接新娘保证书
2015/05/08 职场文书