最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何对javascript文件加载进行优化代码详解

来源:动视网 责编:小采 时间:2020-11-27 20:15:37
文档

如何对javascript文件加载进行优化代码详解

如何对javascript文件加载进行优化代码详解:在js引擎部分,我们可以了解到,当渲染引擎解析到script标签时,会将控制权给JS引擎,如果script加载的是外部资源,则需要等待下载完后才能执行。 所以,在这里,我们可以对其进行很多优化工作。放置在BODY底部为了让渲染引擎能够及早的将DOM树给渲染出来
推荐度:
导读如何对javascript文件加载进行优化代码详解:在js引擎部分,我们可以了解到,当渲染引擎解析到script标签时,会将控制权给JS引擎,如果script加载的是外部资源,则需要等待下载完后才能执行。 所以,在这里,我们可以对其进行很多优化工作。放置在BODY底部为了让渲染引擎能够及早的将DOM树给渲染出来


在js引擎部分,我们可以了解到,当渲染引擎解析到script标签时,会将控制权给JS引擎,如果script加载的是外部资源,则需要等待下载完后才能执行。 所以,在这里,我们可以对其进行很多优化工作。

放置在BODY底部

为了让渲染引擎能够及早的将DOM树给渲染出来,我们需要将script放在body的底部,让页面尽早脱离白屏的现象,即会提早触发DOMContentLoaded事件. 但是由于在IOS Safari, Android browser以及IOS webview里面即使你把js脚本放到body尾部,结果还是一样, 所以这里需要另外的操作来对js文件加载进行优化.

DEFER加载

这是HTML4中定义的一个script属性,它用来表示的是,当渲染引擎遇到script的时候,如果script引用的是外部资源,则会暂时挂起,并进行加载。 渲染引擎继续解析下面的HTML文档,解析完时,则会执行script里面的脚本。

他的支持度是<=IE9的.
并且,他的执行顺序,是严格依赖的,即:

当页面解析完后,他便会开始按照顺序执行 outside1 和 outside2文件。
如果你在IE9以下使用defer的话,可能会遇到 它们两个不是顺序执行的,这里需要一个hack进行处理,即在两个中间加上一个空的script标签

ASYNC加载

async是H5新定义的一个script 属性。 他是另外一种js的加载模式。

  • 渲染引擎解析文件,如果遇到script(with async)

  • 继续解析剩下的文件,同时并行加载script的外部资源

  • 当script加载完成之后,则浏览器暂停解析文档,将权限交给JS引擎,指定加载的脚本。

  • 执行完后,则恢复浏览器解析脚本

  • 可以看出async也可以解决 阻塞加载 这个问题。不过,async执行的时候是异步执行,造成的是,执行文件的顺序不一致。即:

    这时,谁先加载完,就先执行谁。所以,一般依赖文件就不应该使用async而应该使用defer.
    defer的兼容性比较差,为IE9+,不过一般是在移动端使用,也就不存在这个problem了。

    脚本异步

    脚本异步是一些异步加载库(比如require)使用的基本加载原理. 直接上代码:

    这时候,可以异步加载文件,不会造成阻塞的效果.但是,这样加载的js文件是无序的,无法正常加载依赖文件。这时候,我们需要对上述函数进行优化.

    但是,使用脚本一步加载的话,需要等待css文件加载完后,才开始进行加载,不能充分利用浏览器的并发加载优势。而使用静态文本加载async或者defer则不会出现这个问题。

    使用脚本异步加载时,只能等待css加载完后才会加载
    使用静态的async加载时,css和js会并发一起加载

    关于这三种如何取舍,那就主要看leader给我们目标是什么,是兼容IE8,9还是手机端,还是桌面浏览器,或者两两组合。
    但是对于单独使用某一个技能的场景,使用时需要注意一些tips。

    1、js文件放置位置应该放置到body末尾
    2、如果使用async的话,最后加上defer以求向下兼容

    通常,我们使用的加载都是defer加载,因为很强的依赖关系。

    文档

    如何对javascript文件加载进行优化代码详解

    如何对javascript文件加载进行优化代码详解:在js引擎部分,我们可以了解到,当渲染引擎解析到script标签时,会将控制权给JS引擎,如果script加载的是外部资源,则需要等待下载完后才能执行。 所以,在这里,我们可以对其进行很多优化工作。放置在BODY底部为了让渲染引擎能够及早的将DOM树给渲染出来
    推荐度:
    标签: 文件 加载 js
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top