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 相关文章推荐
Extjs4 类的定义和扩展实例
Jun 28 Javascript
JS+JSP checkBox 全选具体实现
Jan 02 Javascript
Jquery 实现图片轮换
Jan 28 Javascript
javascript闭包的理解
Apr 01 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
Sep 04 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
实现React单页应用的方法详解
Aug 02 Javascript
微信小程序多张图片上传功能
Jun 07 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
js实现通过开始结束控制的计时器
Feb 25 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 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
DSP接收机前端设想
2021/03/02 无线电
PHP 和 COM
2006/10/09 PHP
相对路径转化成绝对路径
2007/04/10 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
js window.event对象详尽解析
2009/02/17 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
jquery移动节点实例
2015/01/14 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
JS之相等操作符详解
2016/09/13 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
python在windows下实现备份程序实例
2014/07/04 Python
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
Python解析json文件相关知识学习
2016/03/01 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
一个入门级python爬虫教程详解
2021/01/27 Python
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
《恐龙》教学反思
2014/04/27 职场文书
法制宣传月活动方案
2014/05/11 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
罚站检讨书
2015/01/29 职场文书
食品质检员岗位职责
2015/04/08 职场文书
怒海潜将观后感
2015/06/11 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
日元符号 ¥
2022/02/17 杂记