当前位置: 首页 > news >正文

JavaScript 标签加载

目录

  • JavaScript 标签加载
    • script 标签的 async 和 defer 属性,分别代表什么,有什么区别
      • 1. 普通 script 标签
      • 2. async 属性
      • 3. defer 属性
      • 4. type="module"
      • 5. 各种加载方式的对比
      • 6. 使用建议


JavaScript 标签加载

script 标签的 async 和 defer 属性,分别代表什么,有什么区别

标准答案

1. 普通 script 标签

<script src="script.js"></script>
  • 加载和执行都会阻塞 HTML 解析
  • 按照在文档中的顺序执行
  • 在全局作用域中执行
  • 可以访问全局变量和函数
  • 不支持跨域加载(除非设置 CORS)

2. async 属性

<scriptasyncsrc="script.js"
></script>
  • 异步加载脚本,不阻塞 HTML 解析
  • 加载完成后立即执行,可能会中断 HTML 解析
  • 适用于独立脚本,如第三方统计、广告等
  • 执行顺序不保证,谁先加载完谁先执行
  • 在全局作用域中执行
  • 可以访问全局变量和函数
  • 不支持跨域加载(除非设置 CORS)

3. defer 属性

<scriptdefersrc="script.js"
></script>
  • 异步加载脚本,不阻塞 HTML 解析
  • 等待 HTML 解析完成后,DOMContentLoaded 事件前执行
  • 多个 defer 脚本按照在文档中的顺序执行
  • 适用于需要操作 DOM 或依赖页面结构的脚本
  • 在全局作用域中执行
  • 可以访问全局变量和函数
  • 不支持跨域加载(除非设置 CORS)

4. type=“module”

<scripttype="module"src="script.js"
></script>
  • 异步加载脚本,不阻塞 HTML 解析
  • 默认具有 defer 属性,等待 HTML 解析完成后执行
  • 支持 ES6 模块系统,可以使用 import/export
  • 严格模式(‘use strict’)下执行
  • 具有自己的作用域,不会污染全局作用域
  • 支持跨域加载(需要设置 CORS)
  • 只能通过 HTTP(S) 协议加载,不能通过 file:// 协议加载
  • 模块只会被加载一次,即使多次引用也只会执行一次
  • 模块加载顺序按照 import 语句的顺序执行

5. 各种加载方式的对比

特性普通 scriptasyncdefertype=“module”
加载方式同步异步异步异步
执行时机立即执行加载完立即执行HTML 解析完成后执行HTML 解析完成后执行
执行顺序按文档顺序不保证顺序按文档顺序按 import 顺序
作用域全局全局全局模块作用域
严格模式可选可选可选强制
跨域支持需要 CORS需要 CORS需要 CORS需要 CORS
协议要求必须 HTTP(S)
模块支持不支持不支持不支持支持
重复加载会重复执行会重复执行会重复执行只执行一次

6. 使用建议

  1. 普通 script

    • 适用于简单的脚本
    • 需要立即执行的脚本
    • 对加载顺序有严格要求的脚本
  2. async

    • 适用于独立的第三方脚本
    • 不依赖 DOM 的脚本
    • 统计、分析等工具脚本
  3. defer

    • 适用于需要操作 DOM 的脚本
    • 依赖页面结构的脚本
    • 需要按顺序执行的脚本
  4. type=“module”

    • 适用于现代 JavaScript 应用
    • 需要模块化的代码
    • 需要严格作用域的代码
    • 需要代码复用的场景

相关文章:

  • QT 第三讲 --- 基础篇 初用信号槽与命名规范
  • tomcat组件架构设计
  • 【仿生机器人】建模—— 图生3D 的几个办法
  • 2020年IS SCI2区,多样本和遗忘能力粒子群算法XPSO,深度解析+性能实测
  • 阿里云服务状态监控:实时掌握云服务健康状况
  • 基于cornerstone3D的dicom影像浏览器 第三十一章 从PACS服务加载图像
  • 生态系统服务(InVEST模型)供给与需求、价值核算技术及人类活动、重大工程项目、自然保护区、碳中和等
  • 如何在网页里填写 PDF 表格?
  • 免费在线PDF转图片工具
  • XXE漏洞知识
  • 免费PDF转图片软件
  • 学习 Hooks【Plan - June - Week 2】
  • 免费PDF转图片工具
  • 在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
  • 一桩多用:新能源汽车智慧充电桩的多元化智能管理方案
  • 深入理解 S3 标签字符清洗的正则表达式实践
  • 解决ubuntu20.04无法唤醒的问题的一种方法
  • 2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
  • 多模态学习路线(2)——DL基础系列
  • 视觉slam十四讲实践部分记录——ch2、ch3
  • 做酒的网站/长春seo排名公司
  • 网站建设优選宙斯站长/雅思培训班价格一览表
  • java做网站电话注册/网络推广宣传方式
  • 网站建设一般需要多少钱/seo关键词优化推广价格
  • 如何找人帮我做网站推广/谷歌官方网站
  • 网站开发团队职能/网店代运营合同