Node.js 与浏览器的差异

浏览器和 Node.js 都使用 JavaScript 作为其编程语言。但构建在浏览器中运行的应用程序与构建 Node.js 应用程序是完全不同的。尽管它们都使用 JavaScript,但一些关键差异使得这两种体验截然不同。

从广泛使用 JavaScript 的前端开发者的角度来看,Node.js 应用程序带来了一个巨大的优势:可以用同一种语言来编写所有内容——前端和后端,这非常方便。

你拥有一个巨大的机会,因为我们知道要完全、深入地学习一门编程语言有多难。通过使用同一种语言来完成你在 Web 上的所有工作——无论是在客户端还是在服务器上,你都处于一个独特的优势地位。

改变的是生态系统。

在浏览器中,你大部分时间都在与 DOM 或其他 Web 平台 API(如 Cookies)进行交互。这些在 Node.js 中当然是不存在的。你没有 documentwindow 以及浏览器提供的所有其他对象。

而在浏览器中,我们没有 Node.js 通过其模块提供的所有优秀 API,比如文件系统访问功能。

另一个很大的区别是,在 Node.js 中,你可以控制环境。除非你正在构建一个任何人可以在任何地方部署的开源应用程序,否则你明确知道应用程序将运行在哪个版本的 Node.js 上。与浏览器环境相比,这是一个巨大的便利,因为在浏览器环境中你无法选择访问者会使用什么浏览器。

这意味着你可以编写你的 Node.js 版本所支持的所有现代 ES2015+ JavaScript。由于 JavaScript 发展迅速,但浏览器升级可能较慢,有时在 Web 上你不得不使用较旧的 JavaScript / ECMAScript 版本。你可以使用 Babel 在将代码交付给浏览器之前将其转换为 ES5 兼容的代码,但在 Node.js 中,你不需要这样做。

另一个区别是 Node.js 同时支持 CommonJS 和 ES 模块系统(从 Node.js v12 开始),而在浏览器中,我们才刚开始看到 ES 模块标准的实现。

在实践中,这意味着你可以在 Node.js 中同时使用 require()import,而在浏览器中你只能使用 import

阅读时间
2 分钟
作者
贡献
编辑此页面