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列举css中所有图标的实现代码
Jul 04 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
JS中对象与字符串的互相转换详解
May 20 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
Sep 05 Javascript
jQuery实现拖动效果的实例代码
Jun 25 jQuery
如何开发出更好的JavaScript模块
Dec 22 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 Javascript
vue增加强缓存和版本号的实现方法
May 01 Javascript
vue实现数据控制视图的原理解析
Jan 07 Javascript
详解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
咖啡的化学
2021/03/03 咖啡文化
PHP文件上传主要代码讲解
2013/09/30 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
PHP序列化操作方法分析
2016/09/28 PHP
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
python实现图片批量剪切示例
2014/03/25 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
Python shelve模块实现解析
2019/08/28 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
浅析Python requests 模块
2020/10/09 Python
领导干部廉政承诺书
2014/03/27 职场文书
竞聘书格式及范文
2014/03/31 职场文书
美食节目策划方案
2014/05/31 职场文书
材料化学专业求职信
2014/07/15 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
责任书格式
2015/01/29 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
Python中第三方库Faker的使用详解
2022/04/02 Python
R9700摩机记
2022/04/05 无线电