一般我们加载 Javascript 文件都是使用<script>标签。
就像下面这样:
<script type="text/javascript" src="zbxtools.js"></script>
<script>标签很方便,只要加入网页,浏览器就会读取并运行。但是,它存在一些严重的缺陷。
(1)严格的读取顺序。由于浏览器按照<script>在网页中出现的顺序,读取 Javascript 文件,然后立即运行,导致在多个文件互相依赖的情况下,依赖性最小的文件必须放在最前面,依赖性最大的文件必须放在最后面,否则代码会报错。
(2)性能问题。浏览器采用"同步模式"加载<script>标签,也就是说,页面会"堵塞" (blocking),等待 javascript 文件加载完成,然后再运行后面的 HTML 代码。当存在多个<script>标签时,浏览器无法同时读取,必须读取完一个再去读取另一个,造成读取时间大大延长,页面响应缓慢。
为了解决这些问题,可以使用 DOM 方法,动态加载 Javascript 文件。
function loadScript (url){
var script = document.createElement ("script");
script.type = "text/javascript";
script.src = url;
document.body.appendChild (script);
}
这样做的原理是,浏览器即时创造出一个<script>标签,然后"异步"读取 Javascript 文件。这样不会造成页面堵塞,但会造成另外一个问题:这样加载的 Javascript 文件,不在原始的 DOM 结构之中,因此在 DOM-ready(DOMContentLoaded)事件和 window.onload 事件中指定的回调函数对它无效。
那么我们如何办了?幸亏有大师写的开源加载组件!
外部函数库 LABjs 、SeaJS 和 RequireJS,可以帮助我们更有效地管理 Javascript 加载
LABjs
LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步并行加载,Blocking 是指同步等待执行。LABjs 通过优雅的语法(script 和 wait)实现了这两大特性,核心价值是性能优化。LABjs 是一个文件加载器。
RequireJS 和 SeaJS 则是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更简单自然。
模块加载器一般可降级为文件加载器用,因此使用 RequireJS 和 SeaJS,也可以达成 LABjs 的性能优化目的。
相关推荐
**JSLoader:异步加载JavaScript文件** 在网页开发中,JavaScript文件的加载是网页渲染过程中的关键步骤。大型应用往往包含多个JS文件,这可能导致页面加载速度变慢,影响用户体验。为了解决这个问题,开发者引入了...
当项目js(css)文件使用越来越多,js 文件的加载也成了性能上的一个问题,此资源能够在页面全部加载完成后异步加载js等资源文件,它可以顺序加载资源列表,也可以并发加载资源列表,它包含一个方法调用接口:...
标题中的"javascript写的异步加载js文件函数(支持数组传参)"描述的就是一个自定义的函数,用于异步加载JavaScript文件,而且这个函数还支持一次性传入多个文件路径,形成数组进行批量加载。这个功能对于动态添加或按...
### 异步加载JS文件的方法 #### 背景与概念 在现代Web开发中,为了提高用户体验并优化页面加载速度,异步加载JavaScript文件变得越来越常见。传统的做法是将`<script>`标签放置在HTML文档的底部,但这仍然会阻塞...
本文将深入探讨“手机移动端Tab选项卡切换带下拉数据异步加载js插件”的相关知识,包括其工作原理、实现方式以及如何优化。 1. **Tab选项卡设计** - Tab选项卡是一种常见的界面设计模式,它允许用户通过点击不同的...
在JavaScript(JS)中,异步加载图片是一种优化网页性能的技术。它允许浏览器在不影响页面主要功能的情况下,按需或后台加载非关键资源,如图片。这样可以减少页面初次加载的时间,提高用户体验,特别是对于含有大量...
在"asyLoad.js"这个文件中,我们可以预期它包含了一段用于实现JavaScript异步加载的代码。下面将详细介绍异步加载的原理和常见实现方法。 1. **异步加载的原理**: - 使用`<script>`标签的`async`属性:当`async`...
异步加载JavaScript文件则可以解决这个问题,它允许页面继续加载其他资源,而不会被脚本加载所阻塞。本文将详细介绍异步安全加载JavaScript文件的方法,旨在提供一种安全且高效的脚本加载策略。 首先,我们需要理解...
标题 "JS 动态树 异步加载树 xloadtree WebFXLoadTree" 指的是在JavaScript中实现的一种特定的树形结构组件,它具备动态加载和异步数据获取的功能。这种技术常用于构建大型数据集的层级展示,如文件系统、组织结构或...
在给定的文件列表中,我们看到几个JavaScript文件(a.js、b.js、c.js、js4inc.js)和一个HTML文件(IncldueJsFile_Example.html)。这个例子可能是展示如何根据需要动态加载这些脚本。 例如,假设`IncldueJsFile_...
`script.js`是一个轻量级且功能强大的工具,它允许开发者实现异步加载JavaScript文件,并有效地管理它们之间的依赖关系,从而提升网页的加载速度和用户体验。 1. **异步加载的优势** - **非阻塞加载**:传统的方式...
3. **运行在Tomcat6**:将项目部署到Tomcat 6服务器上,确保所有依赖的JavaScript文件和Dojo库已正确放入相应目录。配置好web.xml文件,以便在服务器端正确处理静态资源请求。 ### 结合Dojo AMD和Requirejs Dojo ...
1. 引入ECharts库:在HTML文件中,我们需要通过`<script>`标签引入ECharts的JS文件,通常为`echarts.min.js`。 2. 准备容器:创建一个用于显示图表的DOM元素,例如一个`<div>`,并设置其ID。 3. 初始化ECharts实例...
动态加载JavaScript文件的基本原理是利用`<script>`标签的异步加载特性或者使用`XMLHttpRequest`或`fetch` API来创建HTTP请求获取JS文件。下面我们将深入探讨这两种方法: 1. **使用`<script>`标签**: 在HTML中,...
JavaScript 加载器在 Web 开发中是非常强大和有用的工具。目前流行的几个加载器,像 curljs、LABjs 和 RequireJS 使用都很广泛。他们功能强大的,但有些情况下可以有更简单的方案。 如果你正在使用 jQuery,有一个...
通过上述函数可以实现异步加载js文件,如果需要同步加载,可以通过将创建的script元素添加到页面的head部分之前来实现: ```javascript function loadJsFileSync(url,FileType,successCallback){ var script = ...
ZTree的一个显著特性是支持异步加载,这意味着它可以在用户需要时按需加载子节点,减少了初次加载时的数据量,提高了页面响应速度。本文将详细讲解如何使用Java来实现ZTree的异步加载功能。 首先,我们需要理解...