Skip to content

浏览器和 v8 引擎的知识

浏览器内核

JS 运行机制: 浏览器 -> 内核 -> JS 解析引擎

浏览器内核JS 解析引擎
chrome早期 WebKit,现目前 BlinkV8
Mozilla FirefoxGeckoSpiderMonkey
EdgeChromiumChakra / V8
SafariWebkitJavascriptCore

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.exportsexports 导出模块。
  • 浏览器:早期没有内置的模块系统,需要借助 AMD(如 RequireJS)或 CMD(如 Sea.js)等规范来实现模块化。ES6 引入了 importexport 语法,现代浏览器已支持该语法。

API 差异

  • Node.js:提供了大量服务器端相关的 API,如文件系统操作(fs 模块)、网络通信(http 模块)、子进程管理(child_process 模块)等。
  • 浏览器:提供了与网页操作相关的 API,如 DOM 操作(document 对象)、事件处理(addEventListener 方法)、存储(localStoragesessionStorage)等。