跳到主要内容

HTML 与 ECMAScript 的发展

HTML 发展历史

版本时间组织
HTML 11991IETF
HTML 21995IETF
HTML 31997IETF
HTML 3.21997.1~至今WWW

ECMAScript 版本历程

版本时间组织
ECMA-262-ECMA
LiveScript1995网景
JavaScript1996网景
JScript1996微软
ECMAScript 1.01997.6ECMA
ECMAScript 2.01998.6ECMA
ECMAScript 3.01999.12ECMA
ECMAScript 4.0废弃ECMA
ECMAScript 5.02009.12ECMA
ECMAScript 5.12011.6ECMA
ECMAScript 2015 (ES6)2015.6ECMA
ECMAScript 2016 (ES7)2016.6ECMA
ECMAScript 2017 (ES8)2017.6ECMA
ECMAScript 2018 (ES9)2018.6ECMA
ECMAScript 2019 (ES10)2019.6ECMA
ECMAScript 2020 (ES11)2020.6ECMA
ECMAScript 2021 (ES12)2021.6ECMA
ECMAScript 2022 (ES13)2022.6ECMA
ECMAScript 2023 (ES14)2023.6ECMA

浏览器兼容性

ES6 并非所有浏览器都支持,因此在使用 ES6 时,需要通过编译过程将代码转换为 ES5 以提高网页的兼容性。此外,使用 polyfill 可以为缺失的 ES6 API 提供支持,从而确保代码在较旧的浏览器中正常运行。

Babel 转译工具

Babel 是最常用的 JavaScript 编译器,能够将 ES6 及更高版本的代码转换为向后兼容的 JavaScript 版本。

官方文档:What is Babel?

在线试用:Babel REPL

安装与配置

通过 npm 安装 Babel:

npm install --save-dev @babel/core @babel/cli @babel/preset-env

创建 Babel 配置文件 .babelrc

{
"presets": ["@babel/preset-env"],
"plugins": []
}

使用示例

配置完成后,可以通过命令行将 ES6 代码编译为 ES5 代码:

npx babel src --out-dir lib

在 HTML 中使用 Babel

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Babel Demo</title>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<script type="text/babel">
const sum = (a, b) => a + b;
console.log(sum(1, 2));
</script>
</body>
</html>

Node.js 对 ES6 特性的支持

可以通过 node.green 查看不同 Node.js 版本对 ES6+ 特性的支持情况。Node.js 已全面支持 ES6 的大部分特性,包括箭头函数、模板字符串、解构赋值、类和模块等。对于某些实验性特性,可以使用 --harmony 标志启用。