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 相关文章推荐
replace()方法查找字符使用示例
Oct 28 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
a标签click和href执行顺序探讨
Jun 23 Javascript
js创建对象的方式总结
Jan 10 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
jQuery EasyUI Pagination实现分页的常用方法
May 21 Javascript
详解jQuery的表单验证插件--Validation
Dec 21 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
vue 实现的树形菜的实例代码
Mar 19 Javascript
详解js 创建对象的几种方法
Mar 08 Javascript
Node.js安装详细步骤教程(Windows版)详解
Sep 01 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+mysql一个名片库程序
2006/10/09 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
canvas绘制七巧板
2017/02/03 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
python中sys.argv函数精简概括
2018/07/08 Python
Python中按值来获取指定的键
2019/03/04 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
文职个人求职信范文
2013/09/23 职场文书
博士生专家推荐信
2015/03/25 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
golang定时器
2022/04/14 Golang
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle