一、JavaScript
JavaScript 是一种轻量级的、解释型的编程语言,它被广泛应用于 Web 开发,最常用于实现浏览器中的交互式元素,如表单验证、动画、异步请求等。随着技术的进步,JavaScript 不仅限于前端开发,还被引入到服务器端,成为全栈开发的关键技术之一。
JavaScript 的特点
- 解释型语言:JavaScript 是一种解释型语言,代码在浏览器中运行时由 JavaScript 引擎即时解释执行。
- 动态类型语言:JavaScript 是一种动态类型语言,变量的数据类型可以在程序运行时发生变化。
- 事件驱动:JavaScript 支持事件驱动编程,能够响应用户的输入、网络请求或浏览器事件。
- 跨平台性:由于 JavaScript 运行在浏览器中,它具有良好的跨平台性,可以在不同的操作系统和设备上运行。
二、ECMAScript
1. 什么是 ECMAScript?
ECMAScript(简称 ES)是由 ECMA International 组织制定的脚本语言标准。它定义了 JavaScript 的核心语法、数据类型、控制结构和对象模型。简而言之,ECMAScript 是 JavaScript 的规范,而 JavaScript 是该规范的一种实现(其他实现包括 ActionScript 等)。
2. ECMAScript 与 JavaScript 的关系
JavaScript = ECMAScript + 宿主环境 API
例如,浏览器中的 JavaScript 包括 ECMAScript 核心和 Web API(如 DOM、BOM),而 Node.js 中的 JavaScript 包含 ECMAScript 核心和 Node.js 的模块系统。
浏览器中的 JavaScript
scss
ECMAScript (核心语法)
│
├── BOM (窗口、导航等)
│
└── DOM (页面操作)
Node.js 中的 JavaScript
scss
ECMAScript (核心语法)
│
└── Node.js API (fs, http 等)
三、BOM:浏览器对象模型
1. BOM 的定义
BOM(Browser Object Model) 提供了与浏览器窗口交互的接口,允许 JavaScript 控制浏览器的导航、窗口尺寸、历史记录等。BOM 是浏览器环境特有的 API,不属于 ECMAScript 标准的一部分。
2. BOM 的主要组成部分
- window 对象 :它代表浏览器的窗口或框架,是 BOM 中的核心对象。通过
window
对象,JavaScript 可以访问浏览器的相关功能,如弹出对话框、访问浏览器的历史记录、获取和设置窗口的大小等。
js
window.alert("Hello, World!"); // 弹出一个警告框
- location 对象 :用于获取和修改当前页面的 URL。通过
location
对象,开发者可以控制浏览器的地址栏,进行页面跳转。
js
window.location.href = "https://www.example.com"; // 跳转到新页面
- navigator 对象:提供关于浏览器和操作系统的信息,例如用户代理字符串、浏览器版本等。
js
console.log(navigator.userAgent); // 获取浏览器的用户代理信息
- history 对象:用于操作浏览器的历史记录,可以让用户通过 JavaScript 操作浏览器的前进、后退功能。
js
window.history.back(); // 返回上一页
四、DOM:文档对象模型
1. DOM 的定义
DOM(Document Object Model) 将 HTML 或 XML 文档抽象为树形结构,允许 JavaScript 动态操作页面内容、结构和样式。DOM 是 W3C 制定的跨平台标准。
2. DOM 的层级结构
- 节点(Node)
所有元素、属性和文本均被视为节点。 - 文档树(Document Tree)
从document
对象开始的层次结构。
js
<html>
<body>
<div id="content">Hello</div>
</body>
</html>
JavaScript 操作示例:
js
const element = document.getElementById('content');
element.textContent = 'World'; // 修改文本内容
3. DOM API 的核心功能
- 查询元素
querySelector()
,getElementsByClassName()
等。 - 修改内容与属性
textContent
,setAttribute()
,style
等。 - 事件处理
addEventListener()
绑定点击、键盘等事件。 - 动态创建节点
createElement()
,appendChild()
等。
五、Node.js
1. Node.js 的诞生
2009 年,Ryan Dahl 基于 Google 的 V8 引擎创建了 Node.js,使 JavaScript 能够脱离浏览器在服务器端运行。Node.js 引入了事件驱动、非阻塞 I/O 模型,适合高并发场景。
2. Node.js 的核心特性
- 无 BOM/DOM
Node.js 移除了浏览器相关 API(如window
),新增了文件系统(fs
)、HTTP 模块等。 - CommonJS 模块系统
通过require()
和module.exports
管理依赖。
js
const fs = require('fs');
fs.readFile('file.txt', (err, data) => {
console.log(data);
});
- 单线程
Node.js 使用单线程来处理请求,但通过事件循环和回调机制来处理并发操作,避免了传统多线程编程中的复杂性。
六、总结
-
JavaScript 是核心编程语言,负责处理网页交互和动态效果。
-
ECMAScript 定义了 JavaScript 语言的规范,不断推动语言的演进。
-
BOM 提供了与浏览器交互的接口,使得 JavaScript 可以操作浏览器窗口、历史记录等功能。
-
DOM 使得 JavaScript 可以动态修改网页的内容和结构,实现动态交互。
-
Node.js 将 JavaScript 引入服务器端,打破了 JavaScript 仅限于浏览器的限制,使其成为全栈开发的利器。