夜听城嚣 夜听城嚣
首页
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 前端基建与架构
  • 专题分享

    • Git入门与开发
    • 前端面试题汇总
    • HTML和CSS知识点
  • 项目实践
  • 抓包工具
  • 知识管理
  • 工程部署
  • 团队规范
bug知多少
  • 少年歌行
  • 青年随笔
  • 文海泛舟
  • 此事躬行

    • 项目各工种是如何协作的
    • TBA课程学习
收藏

dwfrost

前端界的小学生
首页
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 前端基建与架构
  • 专题分享

    • Git入门与开发
    • 前端面试题汇总
    • HTML和CSS知识点
  • 项目实践
  • 抓包工具
  • 知识管理
  • 工程部署
  • 团队规范
bug知多少
  • 少年歌行
  • 青年随笔
  • 文海泛舟
  • 此事躬行

    • 项目各工种是如何协作的
    • TBA课程学习
收藏
  • 第1章 什么是JavaScript
  • 第2章 HTML中的JavaScript
    • 第3章 语言基础
    • 第4章 变量、作用域与内存
    • 第5章 基本引用类型
    • 第6章 集合引用类型
    • 第7章 迭代器与生成器
    • 第8章 对象、类与面向对象编程
    • 第9章 代理与反射
    • 第10章 函数
    • 第11章 异步编程
    • 第12章 BOM
    • 第14章 DOM
    • 第15章 DOM扩展
    • 第16章 DOM2和DOM3
    • 第17章 事件
    • 第18章 动画与Canvas图形
    • 第19章 表单脚本
    • 第20章 JavaScript API
    • 第21章 错误处理与调试
    • 第23章 JSON
    • 第24章 网络请求与远程资源
    • 第25章 客户端存储
    • 第26章 模块
    • 第27章 工作者进程
    • 第28章 最佳实践
    • 《JavaScript高级程序设计》
    frost
    2021-06-13

    第2章 HTML中的JavaScript

    # 第 2 章 HTML 中的 JavaScript

    # <script>元素

    有如下属性:

    • src:外部 url 链接,可以是本域,也可以是其他域,且天然可以跨域。
    • defer:浏览器立即下载脚本,但执行会在页面解析完之后进行。
    • async:立即下载,下载之后立即执行,不会阻塞 html 解析。注意:异步脚本不应该修改 DOM,因为它们没有先后顺序。
    • type:通常是"text/javascript",也可以设置为"module",表示 ES6 模块,可以使用 import/export。
    • 其他,如 crossorigin,charset,integrity。

    可以使用 DOM API 动态加载脚本,如下

    let script = document.createElement('script')
    script.src = 'gibberish.js'
    document.head.appendChild('script')
    
    1
    2
    3

    这种方式对于浏览器预加载器是不可见的,这会他们在资源获取队列中的优先级,从而影响性能。解决方式是,在文档头部显式声明它们:

    <link rel="preload" href="gibberish.js" />
    
    1

    # 行内代码与外部文件

    有 2 种方式使用,因为浏览器解析时会当做脚本来处理。解决办法是用转义,如

    <script>
      console.log('<\/script>')
    </script>
    
    1
    2
    3

    外部文件对比行内代码而言,有如下优势:

    • 可维护性:js 代码很多时,可以使用外部文件来加载,而不是在每个页面都写。
    • 缓存:利用浏览器缓存,如果一段脚本被多个页面使用,则脚本文件只需下载一次。
    • 适应未来:js 放到外部文件后,不需要考虑 script 行内语法在 XHTML 和 HTML 中的差异性。

    # 文档模式

    可以使用头部的 doctype 来切换文档模式,现在浏览器都支持 HTML5 的文档类型,如下

    <!DOCTYPE html>
    
    1

    # <noscript>元素

    该元素用于给不支持 JavaScript 的浏览器或浏览器禁用脚本时,提供替代内容。

    上次更新: 2021/09/20, 23:04:19
    第1章 什么是JavaScript
    第3章 语言基础

    ← 第1章 什么是JavaScript 第3章 语言基础→

    最近更新
    01
    提交代码时修改commit消息
    04-09
    02
    如何快速定位bug
    02-20
    03
    云端web项目开发踩坑
    08-25
    更多文章>
    Theme by Vdoing | Copyright © 2021-2025 dwfrost | 粤ICP备2021118995号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×