angularJS使用ocLazyLoad实现js延迟加载

  最近开发一个系统遇到了一个问题,用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有很多种加载方式,也可以配合路由,指令进行加载。

参考文档:https://oclazyload.readme.io/docs/getting-started

     

时间: 2024-07-30 19:24:08

angularJS使用ocLazyLoad实现js延迟加载的相关文章

AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖

好了,现进入正题,在 AngularJs 实现动态(懒)加载主要是依赖于3个主JS文件和一段依赖的脚本. 实现的过程主要是引用3个主要的JS文件 <script src="angular/1.4.8/angular/angular.min.js"></script> <script src="angular/ui-router/release/angular-ui-router.min.js"></script> &l

JS延迟加载方法

当一个网站有很多JS代码要加载,JS代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文汇总了JS延迟加载的几种方法,希望对大家有用. 1.延迟加载JS代码 代码如下: <script type="text/javascript" src="" id="my"></script> <script type="text/javascript"> setTimeo

Lazyr.js – 延迟加载图片(Lazy Loading)

Lazyr.js 是一个小的.快速的.现代的.相互间无依赖的图片延迟加载库.通过延迟加载图片,让图片出现在(或接近))视窗才加载来提高页面打开速度.这个库通过保持最少选项并最大化速度. 在线演示      源码下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[源码下载] 12款经典的白富美型 jQuery 图片轮播插件 本文链接

angularJS (2) angular.min.js

angular.min.js /* AngularJS v1.2.29 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT*/(function(V,W,v){'use strict';function z(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.a

echo.js 延迟加载图片控件

echo.js的github地址:https://github.com/toddmotto/echo echo是一个独立的JavaScript.轻量级的.延迟图片加载插件,echo压缩后体积不到1k,使用html的标准data-*属性,echo支持IE8+. 使用echo.js非常简单,在网页需要延迟加载的img标签中,设置data-echo属于指向需要加载的图片路径,src属性指向默认加载图片路径.然后引入echo.min.js,并初始化echo即可. <script src="echo

jquery插件lazyload.js延迟加载图片的使用方法

如果一个网页很长并且有很多图片的话,下载图片就需要很多时间,那么就会影响整个网页的加载速度,而这款延迟加载插件,会通过你的滚动情况来加载你需要看的图片,然后它才会从后台请求下载图片,最后显示出来.通过这个插件,可以在需要显示图片的时候,才下载图片,从而可以减少服务器的压力,提高页面加载速度. Lazy Load 插件原理 修改目标img元素的src属性为orginal属性,从而中断图片的加载.检测滚动状态,然后把网页可视区域中的img的src属性还原然后加载图片,从而制造了一种缓冲加载的效果.代

[Angularjs]angular ng-repeat与js特效加载先后导致的问题

写在前面 最近在项目中遇到这样的一个前端的bug,在ng-repeat中绑定的图片,有一个晃动的特效,在手机端浏览的时候,图片有时候会正常展示,有时就展示不出来.当时猜测是因为angularjs与特效的那些代码加载的先后顺序造成的.有了这样的猜测,就有查找解决方案的方向了. 系列文章 [Angularjs]ng-select和ng-options [Angularjs]ng-show和ng-hide [Angularjs]视图和路由(一) [Angularjs]视图和路由(二) [Angular

js 延迟加载的几种方法

1. defer 属性HTML 4.01 为 <script>标签定义了 defer属性. 用途:表明脚本在执行时不会影响页面的构造.也就是说,脚本会被延迟到整个页面都解析完毕之后再执行. 在<script> 元素中设置 defer 属性,等于告诉浏览器立即下载,但延迟执行. <!DOCTYPE html><html><head> <script src="test1.js" defer="defer"

angularjs中的controller.js 要不要分开成多个js文件?

拆分代码一般对可维护性是有好处的,但要注意这些事情: 从理念上讲,拆的是逻辑而不是文件,如果把逻辑拆分理清了,拆不拆文件的重要性并不大.如果对可维护性的提升是100%,逻辑的部分至少要占90%. 写Angular应用,最重要的事情是分层.很多人写不好Angular代码,原因就是没有分层的观念,所以症状就是controller又大又乱.简单的原则是: 远程请求,数据缓存等等一律放进service 不得以而产生的DOM操作,一律放进directive(在Angular应用里,需要你手动去操作DOM的