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 版本支持的所有现代的 ES6-7-8-9 JavaScript。

由于 JavaScript 的发展速度如此之快,但浏览器的升级速度可能会有点慢,有时在 web 上你会被旧的 JavaScript / ECMAScript 版本所困扰。

你可以在将代码发布到浏览器之前使用 Babel 将代码转换为 ES5 兼容,但在 Node.js 中,你不需要它。

另一个不同之处是 Node.js 使用 CommonJS 模块系统,而在浏览器中我们开始看到正在实施的 ES Modules 标准。

在实践中,这意味着你暂时在 Node.js 中使用 require(),在浏览器中使用 import