• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >AngularJS > AngularJS动态加载模块和依赖的方法分析

AngularJS动态加载模块和依赖的方法分析

作者:前端超人 字体:[增加 减小] 来源:互联网 时间:2017-05-30

本文主要包含angularjs模块,angularjs模块化,angularjs依赖注入,angularjs 动态加载,angularjs动态添加div等相关知识,前端超人 希望在学习及工作中可以帮助到您

本文实例讲述了AngularJS动态加载模块和依赖的方法。分享给大家供大家参考,具体如下:

前言

由于AngularJS是单页面应用框架,在正常的情况下,会在访问页面的时候将所有的CSS、JavaScript文件都加载进来。文件不多的时候,页面启动速度倒不会影响太多。但是一旦文件数太多或者加载的第三方库比较大的时候,就会影响页面启动速度。因此对于应用规模大、文件数比较多或者加载的第三方库比较大的时候,采用动态加载JS或者动态加载模块会极大提升页面的启动速度。本文将介绍如何利用ocLazyLoad实现动态加载。

准备

AngularJS动态加载依赖第三方库:ocLazyLoad。ocLazyLoad是一个第三方库,支持AngularJS动态加载module、service、directive以及静态文件。

安装ocLazyLoad

可通过npm或者bower进行安装

npm install oclazyload
bower install oclazyload

</div>

将ocLazyLoad module 添加到你的应用中

angular.module('myApp',['oc.lazyLoad']);

</div>

配置 ocLazyLoad

你可以在 config函数中配置 $ocLazyLoadProvider,配置文件如下

.config(['$ocLazyLoadProvider', function($ocLazyLoadProvider){
  $ocLazyLoadProvider.config({
    debug: true,
    events: true,
    modules: [
      {
        name: 'TestModule',
        files: ['test.js']
      }
    ]
  })
}])

</div>

debug: 用来开启debug模式。布尔值,默认是false。当开启debug模式时,$ocLazyLoad会打印出所有的错误到console控制台上。
events:当你动态加载了module的时候,$ocLazyLoad会广播相应的事件。布尔值,默认为false。
modules:用于定义你需要动态加载的模块。定义每个模块的名字需要唯一。
modules必须要用数组的形式,其中files也必须以数组的形式存在,哪怕只需要加载一个文件

在路由当中加载module

.config(['$routeProvider', function($routeProvider) {
    $routeProvider.otherwise('/index');
    $routeProvider.when('/index', {
      templateUrl: 'index.html',
      controller: 'IndexController',
      resolve: { // resolve 里的属性如果返回的是 promise对象,那么resolve将会在view加载之前执行
        loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
          // 在这里可以延迟加载任何文件或者刚才预定义的modules
          return $ocLazyLoad.load('TestModule'); //加载刚才定义的TestModule
          /*return $ocLazyLoad.load([  // 如果要加载多个module,需要写成数组的形式
            'TestModule',
            'MainModule'
            ]);*/
        }]
      }
    })
}])

</div>

resolve设置的属性可以被注入到Controller当中。如果resolve返回的是promise对象的话,那么它们将在控制器加载以及$routeChangeSuccess被触发之前执行。

$ocLazyLoad就是利用这个原理hack,进行动态加载。

resolve的值可以是:

* key,the value of key 是会被注入到Controller的依赖的名字;
* factory,即可以是一个service的名字,也可以是一个返回值,它是会被注入到控制器中的函数或可以被resolve的promise对象。

通过这样的配置,就可以实现了AngularJS动态加载模块和依赖。但是ocLazyLoad提供的功能更加丰富,不止动态加载模块和依赖,还能动态加载service,diretive等。更多的功能,可以访问[ocLazyLoad官网](https://oclazyload.readme.io)

希望本文所述对大家AngularJS程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • 详解angularJs模块ui-router之状态嵌套和视图嵌套
  • 利用Angularjs中模块ui-route管理状态的方法
  • AngularJS动态加载模块和依赖的方法分析
  • AngularJs 动态加载模块和依赖
  • AngularJS模块详解及示例代码
  • AngularJS 模块详解及简单实例
  • AngularJS模块学习之Anchor Scroll
  • AngularJS模块管理问题的非常规处理方法

相关文章

  • 2017-05-30AngularJS入门教程之过滤器用法示例
  • 2017-05-30Angularjs实现mvvm式的选项卡示例代码
  • 2017-05-30angular.js 路由及页面传参示例
  • 2017-05-30浅谈angularjs依赖服务注入写法的注意点
  • 2017-05-30AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
  • 2017-05-30AngularJS指令用法详解
  • 2017-05-30详解Angular的内置过滤器和自定义过滤器【推荐】
  • 2017-05-30Angular 路由route实例代码
  • 2017-05-30AngularJS实现网站换肤实例
  • 2017-05-30Angular Module声明和获取重载实例代码

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • Angular实现form自动布局
    • angularjs在ng-repeat中使用ng-model遇到的问题
    • AngularJS开发教程之控制器之间的通信方法分析
    • AngularJS基础 ng-show 指令简单示例
    • AngularJS基础知识笔记之表格
    • 实践中学习AngularJS表单
    • AngularJS基础 ng-class-odd 指令示例
    • 详解angular2实现ng2-router 路由和嵌套路由
    • 详解Angular2中的编程对象Observable
    • 详解Angular.js指令中scope类型的几种特殊情况

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有