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
)等。