AngularJS使用ocLazyLoad实现js延迟加载


Posted in Javascript onJuly 05, 2017

最近开发一个系统遇到了一个问题,用angular路由一个html片段,该片段需要使用一个js插件来实现一个富文本编辑器。关键问题在于必须要在片段加载后通过js与dom元素进行绑定。一开始想当然以为直接把js代码写在代码段里不久ok了,然而经过实验,路由将html片段插入页面时只能读取css,无法解析并执行js代码。

google了半天发现了很多angular+requireJs的解决方案,但我觉得对于我这个场景并不适合,因为requirejs本质是一个模块加载器,按需加载只是他的副业,我们用它应该主要是用它来做模块化的,如果我们单纯为了按需加载却要试用模块化语法包装我们的代码(define),感觉有点像用大炮打蚊子,对于我这种需求来说代价巨大。

最后决定使用ocLazyLoad来处理,因为此方案优点是,简单易行无侵入。同时这个方案有些缺点,比如每次动态加载需要的脚本、模版资源会有很多不必要的网络开销,路由定义比较复杂(多了一些配置项,其实不能算复杂,而是繁琐),对于大型复杂业务应用,路由众多,耗费的精力不可忽视。但是用在我这个场景之中正合适。于是便在github上fork下js,引入到项目中。

<script src="js/ocLazyLoad.js"></script>

在需要用到的angular模块里进行配置

var app = angular.module('formCtrlParts', ['oc.lazyLoad']);

再向路由需要用到的控制器里面使用此服务进行js文件的按需加载

app.controller('addNewBlogCtrl',function($scope,$http,$ocLazyLoad){
  $ocLazyLoad.load('../html/ckeditorjs/ckeditor.js');
})

这样基本就大功告成,ocLazyLoad有很多种加载方式,也可以配合路由,指令进行加载。

以上所述是小编给大家介绍的AngularJS使用ocLazyLoad实现js延迟加载,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
js 3秒后跳转页面的实现代码
Mar 10 Javascript
javascript常用的正则表达式实例
May 15 Javascript
Javascript编写俄罗斯方块思路及实例
Jul 07 Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
Jan 17 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
Angular5中状态管理的实现
Sep 03 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
JS面向对象编程——ES6 中class的继承用法详解
Mar 03 Javascript
vue一步步实现alert功能
Jul 05 #Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 #Javascript
JS实现移动端按首字母检索城市列表附源码下载
Jul 05 #Javascript
webpack教程之webpack.config.js配置文件
Jul 05 #Javascript
webstorm添加vue.js支持的方法教程
Jul 05 #Javascript
vue.js实现刷新当前页面的方法教程
Jul 05 #Javascript
vue router2.0二级路由的简单使用
Jul 05 #Javascript
You might like
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
JS获取时间的方法
2015/01/21 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
tab栏切换原理
2017/03/22 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
详解vue高级特性
2020/06/09 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
Python中if __name__ == &quot;__main__&quot;详细解释
2014/10/21 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
python super()函数的基本使用
2020/09/10 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
优秀教导主任事迹材料
2014/05/09 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
web前端之css水平居中代码解析
2021/05/20 HTML / CSS
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
Java实现多文件上传功能
2021/06/30 Java/Android