最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 20:28:50
文档

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

AngularJS动态加载模块和依赖的方法分析:本文实例讲述了AngularJS动态加载模块和依赖的方法。分享给大家供大家参考,具体如下:前言由于AngularJS是单页面应用框架,在正常的情况下,会在访问页面的时候将所有的CSS、JavaScript文件都加载进来。文件不多的时候,页面启动速度倒不会影响太多。但是一
推荐度:
导读AngularJS动态加载模块和依赖的方法分析:本文实例讲述了AngularJS动态加载模块和依赖的方法。分享给大家供大家参考,具体如下:前言由于AngularJS是单页面应用框架,在正常的情况下,会在访问页面的时候将所有的CSS、JavaScript文件都加载进来。文件不多的时候,页面启动速度倒不会影响太多。但是一


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

前言

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

准备

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

安装ocLazyLoad

可通过npm或者bower进行安装

npm install oclazyload
bower install oclazyload

将ocLazyLoad module 添加到你的应用中

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

配置 ocLazyLoad

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

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

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'
 ]);*/
 }]
 }
 })
}])

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

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

resolve的值可以是:

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

通过这样的配置,就可以实现了AngularJS动态加载模块和依赖。但是ocLazyLoad提供的功能更加丰富,不止动态加载模块和依赖,还能动态加载service,diretive等。

文档

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

AngularJS动态加载模块和依赖的方法分析:本文实例讲述了AngularJS动态加载模块和依赖的方法。分享给大家供大家参考,具体如下:前言由于AngularJS是单页面应用框架,在正常的情况下,会在访问页面的时候将所有的CSS、JavaScript文件都加载进来。文件不多的时候,页面启动速度倒不会影响太多。但是一
推荐度:
标签: 动态 分析 angularjs
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top