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

异步加载js文件

    博客分类:
  • js
 
阅读更多

一般我们加载 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 异步加载js文件

    **JSLoader:异步加载JavaScript文件** 在网页开发中,JavaScript文件的加载是网页渲染过程中的关键步骤。大型应用往往包含多个JS文件,这可能导致页面加载速度变慢,影响用户体验。为了解决这个问题,开发者引入了...

    js 异步加载js, css文件

    当项目js(css)文件使用越来越多,js 文件的加载也成了性能上的一个问题,此资源能够在页面全部加载完成后异步加载js等资源文件,它可以顺序加载资源列表,也可以并发加载资源列表,它包含一个方法调用接口:...

    javascript写的异步加载js文件函数(支持数组传参)

    标题中的"javascript写的异步加载js文件函数(支持数组传参)"描述的就是一个自定义的函数,用于异步加载JavaScript文件,而且这个函数还支持一次性传入多个文件路径,形成数组进行批量加载。这个功能对于动态添加或按...

    比较简单的异步加载JS文件的代码

    ### 异步加载JS文件的方法 #### 背景与概念 在现代Web开发中,为了提高用户体验并优化页面加载速度,异步加载JavaScript文件变得越来越常见。传统的做法是将`&lt;script&gt;`标签放置在HTML文档的底部,但这仍然会阻塞...

    手机移动端Tab选项卡切换带下拉数据异步加载js插件

    本文将深入探讨“手机移动端Tab选项卡切换带下拉数据异步加载js插件”的相关知识,包括其工作原理、实现方式以及如何优化。 1. **Tab选项卡设计** - Tab选项卡是一种常见的界面设计模式,它允许用户通过点击不同的...

    JS异步加载图片

    在JavaScript(JS)中,异步加载图片是一种优化网页性能的技术。它允许浏览器在不影响页面主要功能的情况下,按需或后台加载非关键资源,如图片。这样可以减少页面初次加载的时间,提高用户体验,特别是对于含有大量...

    js异步加载代码

    在"asyLoad.js"这个文件中,我们可以预期它包含了一段用于实现JavaScript异步加载的代码。下面将详细介绍异步加载的原理和常见实现方法。 1. **异步加载的原理**: - 使用`&lt;script&gt;`标签的`async`属性:当`async`...

    异步安全加载javascript文件的方法

    异步加载JavaScript文件则可以解决这个问题,它允许页面继续加载其他资源,而不会被脚本加载所阻塞。本文将详细介绍异步安全加载JavaScript文件的方法,旨在提供一种安全且高效的脚本加载策略。 首先,我们需要理解...

    JS 动态树 异步加载树 xloadtree WebFXLoadTree

    标题 "JS 动态树 异步加载树 xloadtree WebFXLoadTree" 指的是在JavaScript中实现的一种特定的树形结构组件,它具备动态加载和异步数据获取的功能。这种技术常用于构建大型数据集的层级展示,如文件系统、组织结构或...

    动态加载外部JS文件

    在给定的文件列表中,我们看到几个JavaScript文件(a.js、b.js、c.js、js4inc.js)和一个HTML文件(IncldueJsFile_Example.html)。这个例子可能是展示如何根据需要动态加载这些脚本。 例如,假设`IncldueJsFile_...

    scriptjs异步JavaScript加载器和依赖管理器

    `script.js`是一个轻量级且功能强大的工具,它允许开发者实现异步加载JavaScript文件,并有效地管理它们之间的依赖关系,从而提升网页的加载速度和用户体验。 1. **异步加载的优势** - **非阻塞加载**:传统的方式...

    Requirejs异步加载Dojo1.6

    3. **运行在Tomcat6**:将项目部署到Tomcat 6服务器上,确保所有依赖的JavaScript文件和Dojo库已正确放入相应目录。配置好web.xml文件,以便在服务器端正确处理静态资源请求。 ### 结合Dojo AMD和Requirejs Dojo ...

    Echarts:基础折线图(含异步加载数据)

    1. 引入ECharts库:在HTML文件中,我们需要通过`&lt;script&gt;`标签引入ECharts的JS文件,通常为`echarts.min.js`。 2. 准备容器:创建一个用于显示图表的DOM元素,例如一个`&lt;div&gt;`,并设置其ID。 3. 初始化ECharts实例...

    javascript函数动态加载javascript文件

    动态加载JavaScript文件的基本原理是利用`&lt;script&gt;`标签的异步加载特性或者使用`XMLHttpRequest`或`fetch` API来创建HTTP请求获取JS文件。下面我们将深入探讨这两种方法: 1. **使用`&lt;script&gt;`标签**: 在HTML中,...

    使用jQuery异步加载 JavaScript脚本解决方案

    JavaScript 加载器在 Web 开发中是非常强大和有用的工具。目前流行的几个加载器,像 curljs、LABjs 和 RequireJS 使用都很广泛。他们功能强大的,但有些情况下可以有更简单的方案。 如果你正在使用 jQuery,有一个...

    JS 动态加载js文件和css文件 同步/异步的两种简单方式

    通过上述函数可以实现异步加载js文件,如果需要同步加载,可以通过将创建的script元素添加到页面的head部分之前来实现: ```javascript function loadJsFileSync(url,FileType,successCallback){ var script = ...

    java实现ztree异步加载

    ZTree的一个显著特性是支持异步加载,这意味着它可以在用户需要时按需加载子节点,减少了初次加载时的数据量,提高了页面响应速度。本文将详细讲解如何使用Java来实现ZTree的异步加载功能。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics