美文网首页
[JavaScript基础] JSON 异步加载 JS时间线

[JavaScript基础] JSON 异步加载 JS时间线

作者: Darkdreams | 来源:发表于2019-03-05 15:19 被阅读0次

    JSON

    一种数据格式,也是一种对象。在对象的语法中,属性名引号可加可不加,但在JSON语法中,属性必须加引号

    {
      "name" : "Tom",
      "age" : 10
    }
    

    字符串转化为JSON String-->JSON
    JSON.parse()

    JSON转化为字符串 JSON-->String
    JSON.stringify()

    异步加载

    JavaScript异步加载
    1. defer 要等到dom文档全部解析完后执行。只有IE可用,也可以把代码写到内部
    <script type="text/javascript" src="index.js" defer="defer"></script>
    <script type="text/javascript" defer="defer">
      console.log("JSON")
    </script>
    
    1. async 加载完就执行,只能加载外部脚本,不能把JS写在script标签里。IE9以上
    <script type="text/javascript" src="index.js" async="async"></script>
    
    1. 创建script,插入DOM;
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src= "demo.js"
    document.head.appendChild(script)
    .....
    

    JS时间线

    1. 创建Document对象,并解析web页面。解析HTML元素和他们的文本内容后添加Element对象和Text节点到文档中。
    2. 遇到link外部CSS,创建线程加载,并继续解析文档。
    3. 遇到script外部JS,并页没有设置asyncdefer,浏览器加载,并阻塞,等待js加载完成后并执行该脚本,然后继续解析文档。
    4. 遇到script外部JS,并且设置有asyncdefer,浏览器创建线程加载,并继续解析文档。对于async属性的脚本,脚本加载完成后继续执行。(异步禁止使用document.write()
    5. 遇到img等,先正常解析DOM结构,然后浏览器异步加载src,并继续解析文档。
    6. 当文档解析完成,document.readyState = "interactive";
    7. 文档解析完成后,所有设置有defer的脚本会按照顺序执行。(注意与async的不同,但同样禁止使用document.write()
    8. document对象触发DOMContentLoaded事件,这也标志着程序执行从同步脚本执行阶段,转化为事件驱动阶段
    9. 当所有async的脚本加载完成并执行后,img等加载完成后,document.readyState = "complete", window对象触发事件。
    10. 从此,以异步相应方式处理用户输入、网络事件等。

    相关文章

      网友评论

          本文标题:[JavaScript基础] JSON 异步加载 JS时间线

          本文链接:https://www.haomeiwen.com/subject/cmpiuqtx.html