Appearance
浏览器和 v8 引擎的知识
浏览器内核
JS 运行机制: 浏览器 -> 内核 -> JS 解析引擎
| 浏览器 | 内核 | JS 解析引擎 |
|---|---|---|
| chrome | 早期 WebKit,现目前 Blink | V8 |
| Mozilla Firefox | Gecko | SpiderMonkey |
| Edge | Chromium | Chakra / V8 |
| Safari | Webkit | JavascriptCore |
node 环境和浏览器环境有什么区别?
Node.js 环境和浏览器环境是 JavaScript 运行的两种不同场景,二者存在诸多区别:
执行环境
- Node.js:作为服务器端的 JavaScript 运行环境,可脱离浏览器在服务器上运行 JavaScript 代码。它借助 Chrome V8 引擎执行代码,具备直接访问操作系统底层资源的能力,如文件系统、网络等。
- 浏览器:是客户端的环境,用于展示网页内容。浏览器提供了渲染引擎(如 Blink、Gecko)来解析和渲染 HTML、CSS 和 JavaScript 代码,JavaScript 代码主要用于操作 DOM、处理用户交互以及与服务器进行通信。
全局对象
- Node.js:全局对象是
global。在 Node.js 中定义的变量和函数默认不会添加到全局对象上,而是属于当前模块。 - 浏览器:全局对象是
window。在浏览器中定义的变量和函数默认会成为window对象的属性和方法。
模块系统
- Node.js:采用 CommonJS 模块规范。使用
require()函数引入模块,用module.exports或exports导出模块。 - 浏览器:早期没有内置的模块系统,需要借助 AMD(如 RequireJS)或 CMD(如 Sea.js)等规范来实现模块化。ES6 引入了
import和export语法,现代浏览器已支持该语法。
API 差异
- Node.js:提供了大量服务器端相关的 API,如文件系统操作(
fs模块)、网络通信(http模块)、子进程管理(child_process模块)等。 - 浏览器:提供了与网页操作相关的 API,如 DOM 操作(
document对象)、事件处理(addEventListener方法)、存储(localStorage和sessionStorage)等。