zoukankan      html  css  js  c++  java
  • <script> 标签

    <script defer src="./xxxx.js" type="text/javascript"></script>
    通常情况下,我们把 CSS 资源的导入放在页面头部,这样能保证 样式 和 DOM,同时渲染,提升用户体验。JS资源的导入放在页面的底部,应为JS通常是用来操作 DOM 的,需要等 DOM 渲染结束,好获取 DOM。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <link rel="stylesheet" type="text/css" href="xxxx.css" />
    </head>
    
    <body>
    </body>
    
    <script src="./xxxx.js"></script>
    
    </html>
    

    必选的属性

    属性 描述
    type MIME-type 指示脚本的 MIME 类型。

    type 可能的值:

    • text/javascript
    • text/ecmascript
    • application/ecmascript
    • application/javascript
    • text/vbscript

    可选的属性

    属性 描述
    async async 规定异步执行脚本(仅适用于外部脚本)。
    charset charset 规定在外部脚本文件中使用的字符编码。
    defer defer 规定是否对脚本执行进行延迟,直到页面加载为止。
    language script 不赞成使用。规定脚本语言。请使用 type 属性代替它。
    src URL 规定外部脚本文件的 URL。
    xml:space preserve 规定是否保留代码中的空白。

    属性介绍

    defer、async,常用的优化手段,这两个属性都使得 script 不会阻塞 DOM 的渲染。
    页面加载的过程:文档解析(DOM 的渲染过程) -> 脚本加载 -> 脚本执行 -> DOMContentLoaded

    defer

    文档解析时,遇到设置了 defer 的脚本<script defer src="./xxxx.js" type="text/javascript"></script>,就会在后台进行下载,但是并不会阻止文档的渲染,当页面解析渲染完毕后。会等到所有的 defer 脚本加载完毕并按照顺序执行,执行完毕后会触发 DOMContentLoaded 事件。
    使用场景:如果你的脚本代码依赖于页面中的DOM元素(文档是否解析完毕),或者被其他脚本文件依赖。

    async

    async 脚本<script async src="./xxxx.js" type="text/javascript"></script>,会在脚本加载完毕后立即执行。
    由于是异步加载,加载的过程不会阻塞文档解析的过程(GUI渲染)。
    但是加载完成后会立即执行,如果执行的时候GUI渲染还未完成,则会中断渲染,相应的JS执行完,GUI继续渲染。
    也就是说 async 脚本的加载和执行可能比GUI渲染完成更早或者更晚。

    async 脚本的加载过程不会影响GUI渲染,但是执行是可能会

    async 的执行,并不会按着 script 在页面中的顺序来执行,而是谁先加载完谁执行。
    async 脚本的加载不计入 DOMContentLoaded 事件统计。
    使用场景:如果你的脚本并不关心页面中的 DOM 元素(文档是否解析完毕),并且也不会产生其他脚本需要的数据。

  • 相关阅读:
    JavaScript 时间帮助封装
    EntityFramework 基类重写
    sql server 大数据, 统计分组查询,数据量比较大计算每秒钟执行数据执行次数
    C# DataTable 转实体对象
    EF自动创建数据库步骤之四(启用数据库初始器)
    EF自动创建数据库步骤之三(自定义数据库初始器)
    EF自动创建数据库步骤之二(继承DbContext类)
    EF自动创建数据库步骤之一(实体类写法)
    十大排序算法_java实现
    位运算
  • 原文地址:https://www.cnblogs.com/MrZhujl/p/15066812.html
Copyright © 2011-2022 走看看