怎样使用lazyload延时加载js和css

发布网友 发布时间:2022-04-22 09:06

我来回答

2个回答

懂视网 时间:2022-05-16 02:24

ocLazyLoad说明

1.ocLazyLoad是AngularJS的第三方库,可以实现模块、控制器及其他依赖的动态加载/按需加载

2.$ocLazyLoad.load()支持多个文件,可以自定义指定文件类型,可以自定义指定是否缓存在客户端

3.存在问题,$ocLazyLoad.load(),返回动态类型$$state,对于js文件不存在或加载失败还没有找到相关处理的api

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

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

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

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

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

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

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


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

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

热心网友 时间:2022-05-15 23:32

//前提引入jqurey.js 和 jquery.lazyload.js
<script src="jquery-1.11.0.min.js"></script>
<script src="jquery.lazyload.js?v=1.9.1"></script>
//然后,
<script type="text/javascript" src="<?php bloginfo('template_directory');?>/js/jquery.lazyload.js"></script>
<script type="text/javascript">
$(function() {
//$("img")是某个标志,你可以换成别的对象($("#id"))
$("img").lazyload({
effect : "fadeIn"
});
});
</script>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com