当前位置: 首页 > 编程日记 > 正文

AngularJS中的按需加载ocLazyLoad

欢迎大家讨论与指导 : )

  初学者,有不足的地方希望各位指出

  一、前言

    ocLoayLoad是AngularJS的模块按需加载器。一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题。但是当我们的网站渐渐庞大起来,这样子的加载策略让网速初始化速度变得越来越慢,用户体验不好。二来,分模块加载易于团队协作,减低代码冲突。

  二、按需加载的对象

    各个Controller模块、Directive模块、Server模块、template模板,其实这些都是一些 .js文件或者 .html文件 

    三 、按需加载的场景

    三、1 路由加载(resolve/uiRouter)

      基于uiRouter的resolve是在加载controller和template之前所执行的一系列操作,它帮助我们初始化我们所要前往的那一个视图。只有be solved(操作完成),controller才会被实例化。因此,我们可以在resolve步骤里面加载我们所需要的controller。

    $stateProvider.state('index', {url: '/',views: {'lazyLoadView': {templateUrl: 'partials/main.html',controller: 'AppCtrl'}    },resolve: {loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad){return $ocLazyLoad.load('js/AppCtrl.js')}]}})

 其中,'js/AppCtrl.js'里面放着一个我们所需要的controller

angular.module('myApp')
.controller('AppCtrl', ['$scope', function($scope){
//...
}])

     三、2 依赖加载

      在依赖项里面导入我们所需要的一系列模块(这里有一层'[ ]'符合哦)

angular.module('gridModule', [['bower_components/angular-ui-grid/ui-grid.js','bower_components/angular-ui-grid/ui-grid.css'
]]).controller('GridModuleCtrl', ['$scope', function($scope){//...
}])

     三、3 Cotroller里动态加载

angular.module('myApp')
.controller('AppCtrl', ['$scope','$ocLazyLoad', function($scope, $ocLazyLoad){$scope.loadBootstrap = function(){$ocLazyLoad.load(['bower_components/bootstrap/dist/js/bootstrap.js','bower_components/bootstrap/dist/css/bootstrap.css'])}var unbind = $scope.$on('ocLazyLoad.fileLoaded', function(e, file){$scope.bootstrapLoaded = true;console.log('下载boot完成');unbind();})
}])

     三、4 template包含加载(config)

    如何处理我们所加载的html模板里面嵌套的controller呢?这里需要oc-lazy-load指令和$ocLazyLoadProvider的配置

/*template A.html*/
<h1>hi i am hzp </h1><div oc-lazy-load="gridModule"><div ng-controller="GridModuleCtrl"><span>{{test}}</span><br/><div ui-grid="gridOptions" class="gridStyle"></div></div></div>
</div>

    $ocLazyLoadProvider.config({modules: [{name: 'gridModule',files: ['js/gridModule.js']}]})

四、如何组织按需加载

    分路由、按功能来区分、打包成不同的多个或单个controller.directive.server模块

  

转载于:https://www.cnblogs.com/BestMePeng/p/AngularJS_ocLazyLoad.html

相关文章:

简单介绍互联网领域选择与营销方法

在我看来&#xff0c;互联网领域的选择是“安家”&#xff0c;而营销方法的不同则表现了“定家”的方式多种多样&#xff0c;只有选对了&#xff0c;“家”才得以“安定”。 下面不妨简单总结一下互联网近年来的热点领域和经典营销方法。 一、热点领域 人工智能 人工智能&#…

ZZCustomAlertView - 一个高度自定义的iOS模态弹窗

2019独角兽企业重金招聘Python工程师标准>>> 这是一个可以高度自定义的iOS模态弹窗 (modal alert view)。 项目地址&#xff1a;https://github.com/zzdjk6/ZZCustomAlertView Github 项目里包含一个 Example 的 Demo 示例。 使用Cocoapod&#xff1a; pod "ZZ…

2018-3-1 算法学习部分

1&#xff1a;算法的Python实现 数据结构以及算法的基本概念 通过小甲鱼论坛中的数据结构部分进行理解基本的概念的自我理解&#xff1a; 数据结构官方&#xff1a;数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及它们之间的关系和操作等相关问题…

深度学习硬件基础:CPU与GPU

CPU:叫做中央处理器(central processing unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。[^3]可以形象的理解为有25%的ALU(运算单元)、有25%的Control(控制单元)、50%的Cache(缓存单元)GPU:叫做图形处理器。

云计算的三种服务模式:IaaS、PaaS和SaaS

租赁 IaaS 云服务,对租户而言,最大优点是其灵活性,由租户自己决定安装什么操作系统、需不需要数据库且安装什么数据库、安装什么应用软件、安装多少应用软件、要不要中间件、安装什么中间件等,相当于购买了一台计算机,要不要使用、何时使用以及如何使用全由自己决定。① 相比于 IaaS 云服务提供商,PaaS 云服务提供商要做的事情增加了,他们需要准备机房、布好网络、购买设备、安装操作系统、数据库和中间件,即把基础设施层和平台软件层都搭建好,然后在平台软件层上划分“小块”(习惯称之为容器)并对外出租。

国内第三方移动推送对接调查:Android、IOS、Flutter,各种云推送、个推、极光、统一推送联盟

第三方移动推送对接,刚开始是移动端发起的。在开会讨论这个对接时,心里突然很迷茫,为什么要做第三方移动推送对接?我们自己为什么不能做移动推送?话说,项目里目前所使用的推送就是自己做的。但是在App离线情况下,消息就收不到了。想起来了,这是最最重要的问题,是为了在离线的情况下,App还能收到通知和消息。如果不是因为这个,这个对接可以不做。因为手机端的app层不出穷太多了,为了给手机省电,用户会主动把运行在前端的app给咔嚓掉…虽然咔嚓掉,但是在有信息的情况下,用户还是希望能够收到信息。

Blender着色器纹理材质创作教程含源文件 Shader Forge

本Blender视频课程是一个正在进行的关于为Cycles渲染引擎构建材质(着色器)的系列。只要有足够的时间和努力&#xff0c;物质性就能给CG场景注入这样的生命。 本课程是一个正在进行的关于为Cycles渲染引擎构建材质(着色器)的系列。有了足够的时间和精力&#xff0c;高质量的阴影…

Android 5.0新特性之沉浸式状态栏

参考资料&#xff1a;http://laobie.github.io/android/2016/03/27/statusbar-util.htmlhttp://laobie.github.io/android/2016/02/15/status-bar-demo.htmlhttp://www.jianshu.com/p/f0a0efe5d26f将状态栏颜色和顶部导航栏颜色保持一致从而达到融合的效果&#xff0c;我们将这…

数字信号处理实验三用fft对信号作频谱分析_机器学习中的音频特征:理解Mel频谱图...

如果你像我一样&#xff0c;试着理解mel的光谱图并不是一件容易的事。你读了一篇文章&#xff0c;却被引出了另一篇&#xff0c;又一篇&#xff0c;又一篇&#xff0c;没完没了。我希望这篇简短的文章能澄清一些困惑&#xff0c;并从头解释mel的光谱图。信号信号是一定量随时间…

【Kaggle Learn】Python 1-4

【Kaggle Learn】Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Python syntax, variable assignment, and numbers spam_amount 0 print(spam_amount)# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam)…

svn中的ignore

首先,svn GUI菜单右键的ignore功能,写的模模糊糊,网上也没啥人给出清晰的解释,stackoverflow推荐用命令行控制 SVN有3中方法配置ignore 1.配置文件 C:\Users\{you}\AppData\Roaming\Subversion\config 这个只是本地客户端端, 2.svn&#xff1a;ignore 如果带recursively,在执行…

2018-3-2线性表

2018-3-2 来源小甲鱼论坛&#xff1a; ★第八讲 线性表3 ★,数据结构与算法,技术交流区,鱼C论坛 - Poweredby Discuz! http://bbs.fishc.com/forum.php?modviewthread&tid96295&ctid1041 1. 线性表&#xff08;List&#xff09;的定义&#xff1a; 由零个或多个数…

元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏

了解如何开发零编程背景的Oculus Quest游戏 你会学到什么 为Oculus Quest构建应用程序 设计和开发虚拟现实游戏 在虚幻引擎中工作 使用材料和纹理 优化内容&#xff0c;实现移动和虚拟现实游戏的快速性能 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#x…

虚拟机访问svn服务器超时_SVN卡顿原因及简单修复方法

项目中用SVN&#xff0c;使用过程中尤其时访问SVN浏览器的时候经常卡顿&#xff0c;这个时间累积起来很是浪费&#xff0c;所以找个机会从各个方面分析了一下卡顿原因&#xff0c;也总结了一些修复经验。硬件问题查看电脑配置是否SSD双硬盘&#xff0c;如果是&#xff0c;查看设…

前端页面——Cookie与Session有什么区别

我们在实际生活中总会遇到这样的事情&#xff0c;我们一旦登录&#xff08;首次输入用户名和密码&#xff09;某个网站之后&#xff0c;当我们再次访问的时候&#xff08;只要不关闭浏览器&#xff09;&#xff0c;无需再次登录。而当我们在这个网站浏览一段时间后&#xff0c;…

【Kaggle Learn】Python 5-8

五. Booleans and Conditionals Using booleans for branching logic x True print(x) print(type(x)) True <class bool> ①Booleans Python has a type bool which can take on one of two values: True and False. ②Comparison Operations a b, and, or, not等等 …

hdu 2795 段树--点更新

http://acm.hdu.edu.cn/showproblem.php?pid2795 在第一和第三多学校都出现线段树&#xff0c;我在比赛中并没有这样做。&#xff0c;热身下&#xff0c;然后31号之前把那两道多校的线段树都搞了&#xff0c;这是一道热身题 关键是建模&#xff1a; 首先一定看清楚题目构造的场…

2018-3-3 论文(网络评论中非结构化信息的表示与应用研究)笔记一

文章立脚点&#xff1a; 大量网络评论的出现&#xff0c;使得产品制造商或消费者很难跟踪己购产品用户的意见和建议&#xff0c;这就给他们的决策造成了额外的困难。 文章思路; 将网络评论中的非结构化信息处理成结构化信息 文章的总体的脉络 首先研宄评论分词、词性标注…

Blender中的大师级3D环境场景制作学习教程

你需要在一个地方学习的一切 在本课程中&#xff0c;您将学习Blender中景观创建的每一个重要工作流程&#xff0c;而无需使用任何付费附加组件或资产。 你将学习如何创造山脉、海洋、森林、沙漠、云层和天气影响。无需搜索描述特定技术或工作流程的在线视频–您将在一门课程中…

git diff 比较文件_使用Python创建你自己的diff工具

为什么我需要自己的diff工具&#xff1f;我经常使用git跟踪我的编码项目、文章、业务工作等等。git的一个美妙之处在于&#xff0c;你可以通过简单地使用其内置的diff功能来轻松地比较你的工作的不同状态。要使用这个功能&#xff0c;你只需要满足两个约束:首先&#xff0c;你需…

Oracle开发:normal ,sysdba,sysoper区别

Oracle将用户分成两类&#xff1a;【system】和【sys】 【system】用户只能用normal身份登陆em。(可以看成公司的普通成员)【sys】用户具有“SYSDBA”(可以看成公司的CEO)或者“SYSOPER”权限(可以看成公司的运营主管)&#xff0c;登陆em也只能用这两个身份&#xff0c;不能用n…

记录win10快捷键

wintab 虚拟桌面 winshifts 截图 wins 搜索 winq 小娜 win↑ 或←等 快速分屏 1809: winv 剪贴板 笔记本: ~~

清除浮动实用方案

1&#xff1a;给父元素添加overflow&#xff1a;hidden属性 2&#xff1a;father&#xff1a;after{ content: ""; display: block; clear: both; }转载于:https://www.cnblogs.com/liujianhui/p/4613600.html

2018-3-4 nginx和Tengine 以及高并发的概念

问题一&#xff1a;什么是nginx&#xff1f;&#xff1f; 来源百度百科&#xff1a;nginx_百度百科 https://baike.baidu.com/item/nginx/3817705?fraladdin Nginx (engine x) 是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔…

三维植物树木模型 Maxtree – Plant Models Vol 74

maxtree–工厂模型第74卷 大小解压后&#xff1a;2.34G 信息: 植物模型第74卷是高质量的三维植物模型的集合。包括12个物种&#xff0c;共72个单一模式。 获取地址&#xff1a;三维植物树木模型 Maxtree – Plant Models Vol 74-云桥网 种类 三角枫 槭树 复叶槭 鸡爪槭 白桦…

python pandas_Python库Pandas数据可视化实战案例

点击上方“爱好Python的胡同学”&#xff0c;选择“星标”公众号每晚八点&#xff0c;Python干货&#xff0c;不见不散&#xff01;数据可视化可以让我们很直观的发现数据中隐藏的规律&#xff0c;察觉到变量之间的互动关系&#xff0c;可以帮助我们更好的给他人解释现象&#…

inconfont 字体库应用

先去注册个号码&#xff0c;好像只可以用新浪微博登录哈&#xff0c;搞一个微博去。 第一就是点上面图标库&#xff0c;选择官方和所有都行。 恩接着点一个图标&#xff0c;他就自己跑到 第二个按钮哪里去了&#xff0c;在点第二个按钮&#xff0c;会出来一个创建项目&#xff…

deepin初试与file browser使用小结

①c盘也可以弄压缩盘安装deepin啊 ②deepin硬盘格式Windows看不见,而在deepin中Windows硬盘可以看见 ③安装完deepin如果直接进入了win10,其实不用费这么大劲搞来搞去,比如修复uefi easyuefi什么的 直接关闭win10的快速启动 然后用easybcd 弄个引导(grup2)就行 很简单 ④dee…

iptables工具__过滤包—命令

iptables工具__过滤包—命令(-A、-I、-D、-R、-L等)、参数(-p、-s、-d、--sport、--dport、-i、-o等)、动作-j (ACCEPT、DROP、REJECT、REDIRECT等) iptables 指令语法&#xff1a;iptables [-t table] command [match] [-j target/jump]-t 参数用来指定规则表&#xff0c;内建…

2018-3-5(论文——网络中非结构信息的表示与应用)笔记二 (歧义词,未登录词,禁用词)

1.文本的词性标注 词性作为一种语义特征通常&#xff1a;名词 n 动词 v 副词 d 连词 c 形容词 a 通过使用自动标注器&#xff0c;完成文本的标注。 2.歧义词 -----汉字处理 按照偏正结构&#xff0c;汉字通常是形容词在前名词&#xff08;中心…