`
zhouyrt
  • 浏览: 1172604 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS/CSS module LazyLoad 之三

 
阅读更多

在开始这篇前,有两个小问题须说明一下

 

情况一

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
5
6
分享到:
评论

相关推荐

    Angular4LazyloadAngular4懒加载htmljscss等资源

    Angular 4 懒加载(Lazy Loading)是提高应用程序性能的一种关键策略,它允许我们按需加载模块,而不是一次性加载整个应用。这显著减少了初始加载时间,尤其在大型项目中,用户可以更快地看到应用程序的主要界面,而...

    edge-magento-module-lazyload:外缘的Magento延迟加载产品模块

    安装和配置"edge-magento-module-lazyload"模块时,需要修改Magento的布局文件(XML),可能还需要定制一些CSS和JavaScript,以适应网站的现有样式和交互。 在"edge-magento-module-lazyload-master"这个压缩包中,...

    font-load-module-samples:CSS 字体加载模块示例

    本篇将深入探讨“font-load-module-samples”项目,以及如何利用CSS字体加载模块提升网页性能。 1. **CSS字体加载策略** - **延迟加载(Lazy Loading)**:传统CSS通过`@font-face`规则引入字体,可能导致页面渲染...

    angularjs-requirejs-lazy-load

    标题 "angularjs-requirejs-lazy-load" 指向的是一个使用 AngularJS 和 RequireJS 进行懒加载(Lazy Loading)的项目。这个项目旨在展示如何在基于 AngularJS 的应用中结合 RequireJS 来优化资源加载,提高应用程序...

    基于webpack4搭建的react项目框架的方法

    在React组件中,我们使用`bundle-loader`导入组件,如`Home`,并用自定义的懒加载组件`LazyLoad`包裹: ```javascript import Home from "bundle-loader?lazy&name=[name]!./Home"; import React, { Component } ...

    angularjs ocLazyLoad分步加载js文件实例

    var myApp = angular.module("myApp", ["ui.router", "oc.lazyLoad"]); myApp.config(function ($stateProvider, $urlRouterProvider) { $urlRouterProvider.when("", "/home"); $stateProvider.state('home', { ...

    AngularJS中的按需加载ocLazyLoad示例

    在AngularJS中,为了优化大型应用的性能和用户体验,我们可以采用按需加载(Lazy Loading)技术,其中ocLazyLoad是一个非常实用的库,它允许我们在运行时动态加载模块、控制器、服务、指令等。以下是对ocLazyLoad的...

    使用Workbox20的Angular渐进式Web应用程序

    window.addEventListener('load', () =&gt; { navigator.serviceWorker .register('ngsw-worker.js') .then(registration =&gt; console.log('Service Worker registered with scope:', registration.scope)) .catch...

    AngularJS动态加载模块和依赖的方法分析

    angular.module('myApp', ['oc.lazyLoad']); ``` ### 配置ocLazyLoad 在配置阶段,你可以使用`$ocLazyLoadProvider`来设置动态加载的参数: ```javascript .config(['$ocLazyLoadProvider', function($...

    yui 资源包

    此外,YUI的延迟加载(LazyLoad)特性,能让非核心模块在需要时才加载,进一步优化资源使用。 总结,YUI 3.9.0 r2是一个强大的前端开发框架,它提供了一整套工具和组件,以应对复杂的界面设计挑战,并通过优化资源...

    Webapp Architecture

    - **LazyLoad**:按需加载资源,提高页面性能。 - **curl.js**:用于异步加载脚本和样式表的工具。 - **DeferJS**:延迟脚本执行。 - **jquery.defer.js**:基于jQuery的异步控制工具。 - **jQI**:jQuery插件...

    AngularJS使用ocLazyLoad实现js延迟加载

    var app = angular.module('formCtrlParts', ['oc.lazyLoad']); ``` 3. **控制器中的按需加载**:在需要使用延迟加载模块的控制器中,使用`$ocLazyLoad`服务加载具体的JavaScript文件。例如: ```javascript ...

    Angular-Ui-Router+ocLazyLoad动态加载脚本示例

    angular.module('myRouters', ['ui.router', 'oc.lazyLoad']) .state('index', { url: '/index', title: '首页 | 示例应用', views: { 'A': { templateUrl: 'components/header/header.html', controller: '...

    page-loading

    9. **压缩与合并**:通过Gzip压缩JavaScript文件,以及合并多个CSS和JS文件,可以减少HTTP请求次数,降低加载时间。 10. **缓存策略**:通过设置HTTP缓存头,可以让浏览器缓存资源,下次访问时直接从本地读取,加快...

Global site tag (gtag.js) - Google Analytics