在开始这篇前,有两个小问题须说明一下
情况一
LazyLoad.js(['a.js','a.js'],function(){});
有人会问为什么要在页面中引入两次a.js? 我也想问。其实是多余的。但有人就喜欢这么用,那怎么办。只能凉拌了。我可以在内部对数组中重复元素去重下。但这无疑增加了LazyLoad.js的代码量,或者说我更愿意看到不要这么去写。当然我自己用肯定不会这么写的。
情况二
LazyLoad.js(['a.js'], function(){});
LazyLoad.js(['b.js'], function(){});
这种写法也是杜绝的,它等同于
LazyLoad.js(['a.js', 'b.js'], function(){});
有人或许想在每一个js载入后单独有一个回调,这个功能后续有专门的篇幅。 因为这个系列的前提是所有的js都加载后才回调,即所有资源加载完后只回调一次。
好了,如果你赞同以上约定,那么请继续往下看。
前两篇完成对js和css的惰性加载功能,但其实还有一些问题的。最重要的就是加载重复资源的问题。这篇会在将已经加载过的资源(JS/CSS)记录下,第二次加载重复的则会有如下提示
html如下
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>LazyLoad_0.3.js</title>
<script src="http://files.cnblogs.com/snandy/LazyLoad_0.3.js"></script>
<script type="text/javascript">
var ary = [
'http://files.cnblogs.com/snandy/a.js',
'http://files.cnblogs.com/snandy/b.js',
'http://files.cnblogs.com/snandy/c.js'
];
LazyLoad.js(ary, function(){
c();
});
function clk(){
LazyLoad.js(['http://files.cnblogs.com/snandy/a.js'], function(){
alert('b');
});
}
</script>
</head>
<body>
<button onclick="clk()">loading a.js again</button>
</body>
</html>
页面打开后就载入了a,b,c三个js,点击按钮"loading a.js again"后会弹出对话框
从Firebug可以看到,不会重复载入a.js。
但如果此html文件引入的上一篇的LazyLoad_0.2.js,你会发现a.js被再次载入了
此外,上一篇代码虽然较容易理解。如js与css方法时分开的。但冗余代码较多。此篇LazyLoad_0.3.js做了重构,请仔细比对。
- 大小: 11.8 KB
- 大小: 4 KB
- 大小: 11.5 KB
- 大小: 16.6 KB
分享到:
相关推荐
Angular 4 懒加载(Lazy Loading)是提高应用程序性能的一种关键策略,它允许我们按需加载模块,而不是一次性加载整个应用。这显著减少了初始加载时间,尤其在大型项目中,用户可以更快地看到应用程序的主要界面,而...
安装和配置"edge-magento-module-lazyload"模块时,需要修改Magento的布局文件(XML),可能还需要定制一些CSS和JavaScript,以适应网站的现有样式和交互。 在"edge-magento-module-lazyload-master"这个压缩包中,...
本篇将深入探讨“font-load-module-samples”项目,以及如何利用CSS字体加载模块提升网页性能。 1. **CSS字体加载策略** - **延迟加载(Lazy Loading)**:传统CSS通过`@font-face`规则引入字体,可能导致页面渲染...
标题 "angularjs-requirejs-lazy-load" 指向的是一个使用 AngularJS 和 RequireJS 进行懒加载(Lazy Loading)的项目。这个项目旨在展示如何在基于 AngularJS 的应用中结合 RequireJS 来优化资源加载,提高应用程序...
在React组件中,我们使用`bundle-loader`导入组件,如`Home`,并用自定义的懒加载组件`LazyLoad`包裹: ```javascript import Home from "bundle-loader?lazy&name=[name]!./Home"; import React, { Component } ...
var myApp = angular.module("myApp", ["ui.router", "oc.lazyLoad"]); myApp.config(function ($stateProvider, $urlRouterProvider) { $urlRouterProvider.when("", "/home"); $stateProvider.state('home', { ...
在AngularJS中,为了优化大型应用的性能和用户体验,我们可以采用按需加载(Lazy Loading)技术,其中ocLazyLoad是一个非常实用的库,它允许我们在运行时动态加载模块、控制器、服务、指令等。以下是对ocLazyLoad的...
window.addEventListener('load', () => { navigator.serviceWorker .register('ngsw-worker.js') .then(registration => console.log('Service Worker registered with scope:', registration.scope)) .catch...
angular.module('myApp', ['oc.lazyLoad']); ``` ### 配置ocLazyLoad 在配置阶段,你可以使用`$ocLazyLoadProvider`来设置动态加载的参数: ```javascript .config(['$ocLazyLoadProvider', function($...
此外,YUI的延迟加载(LazyLoad)特性,能让非核心模块在需要时才加载,进一步优化资源使用。 总结,YUI 3.9.0 r2是一个强大的前端开发框架,它提供了一整套工具和组件,以应对复杂的界面设计挑战,并通过优化资源...
- **LazyLoad**:按需加载资源,提高页面性能。 - **curl.js**:用于异步加载脚本和样式表的工具。 - **DeferJS**:延迟脚本执行。 - **jquery.defer.js**:基于jQuery的异步控制工具。 - **jQI**:jQuery插件...
var app = angular.module('formCtrlParts', ['oc.lazyLoad']); ``` 3. **控制器中的按需加载**:在需要使用延迟加载模块的控制器中,使用`$ocLazyLoad`服务加载具体的JavaScript文件。例如: ```javascript ...
angular.module('myRouters', ['ui.router', 'oc.lazyLoad']) .state('index', { url: '/index', title: '首页 | 示例应用', views: { 'A': { templateUrl: 'components/header/header.html', controller: '...
9. **压缩与合并**:通过Gzip压缩JavaScript文件,以及合并多个CSS和JS文件,可以减少HTTP请求次数,降低加载时间。 10. **缓存策略**:通过设置HTTP缓存头,可以让浏览器缓存资源,下次访问时直接从本地读取,加快...