「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」
本文为重学 HTML 系列文章第二篇,前一篇文章了解了 MDN 上面的 HTML 标签分类,在接触 HTML 标签之前,先来看一下 HTML 的第一行 —— doctype 定义。
我们现在使用的 HTML 版本几乎都是 HTML5,doctype 的定义很简单:
<!DOCTYPE html>
DOCTYPE 是一个声明而不是标签,因此语法上也与 HTML 标签不同,它的目的是告知浏览器当前文档使用的 HTML 版本。
这里涉及到 HTML 的版本问题,HTML5 是 HTML 第五个大版本,在此之前的是 HTML4.01 版本,这个版本是基于 SGML 的,在 doctype 中需要引用 DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "<http://www.w3.org/TR/html4/strict.dtd>">
或者:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<http://www.w3.org/TR/html4/loose.dtd>">
可以看到添加 DTD 之后 doctype 定义内容很长,不同的 DTD 包含的支持内容也是不同的,除了 HTML4.01 之外曾经还有 XHTML 相关的 DTD,每一种都有不同的内容限制。
现在 HTML5 几乎完全标准化了,再去讨论旧版本之间的具体区别已经没什么意义了。除了 doctype 不同,与早期版本 HTML 相比,HTML5 在标签上也有了很多重要变化:引入了更多语义化标签、支持更强大的绘图能力、支持音视频处理等。
回到 doctype 本身,这种在正式内容之前插入一行内容的做法是不是好像在哪里见过?
熟悉 shell 脚本的一定见过第一行的这个内容:
#!/bin/sh
这一行代码的专业名称叫 Shebang,它写在最前面一行,用来指定解释器的位置,当系统读取到 Shebang 之后就会使用对应的解释器来执行当前脚本文件。
举个例子,如果我们想写一个 node 脚本,我们就可以通过在 Shebang 指定 node:
#!/usr/bin/env node
console.log("Hi node");
直接执行这个脚本,系统就会调用 node 去解析脚本内容。
最后推荐一个最近发现的使用 js 编写脚本的一个小工具 github.com/google/zx,这… Shebang 相关知识。
从 doctype 到 Shebang 逐渐偏离标题了,关于 doctype 简单了解一下就可以,接下来会正式进入 HTML 内容部分。