Node.js 与浏览器之间的差异
浏览器和 Node.js 都使用 JavaScript 作为编程语言。构建在浏览器中运行的应用程序与构建 Node.js 应用程序完全不同。尽管始终是 JavaScript,但一些关键差异使体验大相径庭。
对于大量使用 JavaScript 的前端开发人员而言,Node.js 应用程序带来一个巨大的优势:能够使用单一语言编写所有内容——前端和后端。
这是一个巨大的机会,因为我们知道要完全深入地学习一门编程语言有多难,而通过使用相同的语言来完成你在 web 上的所有工作——客户端和服务器端,你都处于独特的优势地位。
TIP
变化的是生态系统。
在浏览器中,大多数情况下你正在做的是与 DOM 或其他 Web 平台 API(如 Cookie)进行交互。当然,这些在 Node.js 中不存在。你没有 document
、window
和浏览器提供的其他所有对象。
而且在浏览器中,我们没有 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
。