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 相关文章推荐
jQuery 入门级学习笔记及源码
Jan 22 Javascript
js 获取子节点函数 (兼容FF与IE)
Apr 18 Javascript
Jquery中获取iframe的代码
Jan 11 Javascript
没有document.getElementByName方法
Aug 19 Javascript
js判断url是否有效的两种方法
Mar 04 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
跟我学习javascript的浮点数精度
Nov 16 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
JavaScript中的函数式编程详解
Aug 22 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
php中++i 与 i++ 的区别
2012/08/08 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
php写的AES加密解密类分享
2014/06/20 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
python获取标准北京时间的方法
2015/03/24 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
python中的decorator的作用详解
2018/07/26 Python
Python中的取模运算方法
2018/11/10 Python
python 读取二进制 显示图片案例
2020/04/24 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
RealTek面试题
2016/06/28 面试题
诉讼代理人授权委托书
2014/04/08 职场文书
办公室禁烟通知
2015/04/23 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript