Node.js 和浏览器的区别
浏览器和 Node.js 都使用 JavaScript 作为其编程语言。构建在浏览器中运行的应用程序与构建 Node.js 应用程序完全不同。尽管它始终是 JavaScript,但有一些关键区别使体验截然不同。
从广泛使用 JavaScript 的前端开发人员的角度来看,Node.js 应用程序带来了巨大的优势:能够使用单一语言编程所有内容 - 前端和后端。
你拥有巨大的机会,因为我们知道深入学习一门编程语言有多难,而通过使用相同的语言来完成你在网络上的所有工作 - 无论是在客户端还是服务器端,你都处于独特的优势地位。
变化的是生态系统。
在浏览器中,大多数情况下你所做的是与 DOM 或其他 Web 平台 API(如 Cookie)交互。当然,这些在 Node.js 中不存在。你没有 `document`、`window` 和浏览器提供的其他所有对象。
在浏览器中,我们没有 Node.js 通过其模块提供的所有不错的 API,例如文件系统访问功能。
另一个重大区别是,在 Node.js 中,你控制着环境。除非你正在构建任何人都可以在任何地方部署的开源应用程序,否则你知道将在哪个版本的 Node.js 上运行应用程序。与浏览器环境相比,在浏览器环境中,你没有选择访问者将使用哪个浏览器的奢侈,这非常方便。
这意味着你可以编写 Node.js 版本支持的所有现代 ES2015+ JavaScript。由于 JavaScript 的发展速度很快,但浏览器的升级速度可能有点慢,因此有时在网络上你只能使用旧的 JavaScript/ECMAScript 版本。你可以使用 Babel 将你的代码转换为 ES5 兼容代码,然后再将其发布到浏览器,但在 Node.js 中,你不需要这样做。
另一个区别是,Node.js 支持 CommonJS 和 ES 模块系统(自 Node.js v12 起),而在浏览器中,我们开始看到 ES 模块标准的实现。
实际上,这意味着您可以在 Node.js 中同时使用 `require()` 和 `import`,而在浏览器中只能使用 `import`。