zoukankan      html  css  js  c++  java
  • 脚本的加载,解析,与执行

    <script> 标签引入脚本有三种情况:

    立即执行

    <script src="a.js">
    <script src="b.js">

    顺序:保证先后顺序。解析:HTML 解析器遇到它们时,将阻塞(取停止解析),待脚本下载完成并执行后,继续解析标签之后的文档。

    浏览器对它的处理主要有2部分:下载和执行
      下载在有些浏览器中是并行的,有些浏览器中是串行的,如IE8、Firefox3、Chrome2都是并行下载的
      执行在所有浏览器中默认都是阻塞的,当js在执行时不会进行html解析等其它操作,所以页面顶部的js不宜过大,因为那样将导致页面长时间空白,对于这些外链js,有2个属性可以减少它们对页面加载的影响,分别是:

      1. async
      2. 标识js是否异步执行,当有这个属性时则不阻塞当前页面的加载,并在js下载完后立刻执行
      3. 不能保证多个script标签的执行顺序
      4. defer
      5. 标示js是否延迟执行,当有这个属性时js的执行会推迟到页面解析完成之后
      6. 可以保证多个script标签的执行顺序



    推迟执行

    <script defer src="a.js">
    <script defer src="b.js">

    顺序:保证先后顺序。解析:HTML 解析器遇到它们时,不阻塞(脚本将被异步下载),待文档解析完成之后,执行脚本。

    尽快执行

    <script async src="a.js">
    <script async src="b.js">

    顺序:不保证先后顺序。解析:HTML 解析器遇到它们时,不阻塞(脚本将被异步下载,一旦下载完成,立即执行它),并继续解析之后的文档。

    有一张图可以帮助理解这些情形:

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    加载顺序就是按js出现在html里的先后顺序
    执行时同一个块里的所有定义语句先执行 然后再按顺序执行其他语句
    与事件绑定的语句在触发时才解析和执行

    把你的JavaScript打包成PNG文件

    把你的JS和CSS添加到图片的末尾,然后用CSS来裁切,通过一次HTTP请求来获得应用程序中所需的所有信息。

    我最近找到了这个方法。它基本上把你的JavaScript/css数据打包成PNG文件。之后,你可以拆包,只要使用画布API的getImageData()。此外,它非常高效。你可以在不缩小数据的情况下,多压缩35%左右。而且是无损压缩!我得指出,对比较庞大的脚本来说,在图片指向画布、读取像素的过程中,你会觉得有“一段”装入时间。

    详情可参考:http://www.1stwebdesigner.com/design/load-JavaScript-faster/

     
  • 相关阅读:
    2016年回家的大概经过
    [转载][记录]shell 批量修改文件名
    Tinymce4 中Ajax多次加载时,会出现菜单在第二次进入时,显示的下拉菜单在左上角
    PHP生成HTML页面顶部出现空白部分(&#65279字符?)
    tcpdf MultiCell line break
    [转载][记录]javascript生成不重复的随机数
    [转载]PHP 字符串替换中文
    PHP 使用get_class_methods()和array_diff() 兩個相同的類中方法差集
    mysql datetime 排序
    highcharts 去掉右下角链接
  • 原文地址:https://www.cnblogs.com/jellychow/p/3146450.html
Copyright © 2011-2022 走看看