返回

Node之父ry回顾设计错误:Deno的诞生与Node的未来

前端

Node.js 之父 Ryan Dahl 在 JSConf EU 2023 大会上发表了精彩演讲,在演讲中,他回顾了他在 Node 设计过程中所犯的一些错误。这些错误涉及到 Node 安全、构建系统 (GYP)、package.json 等方面。Dahl 也阐述了开发新项目 Deno 背后的一些故事、原因和未来规划。

Node 设计中的错误

Node 安全

Dahl 首先谈到了 Node 安全方面的问题。他承认,早期 Node 的安全设计存在一些缺陷,比如它允许用户在没有沙箱的情况下运行代码,这使得 Node 容易受到各种攻击。为了解决这个问题,Node 社区后来引入了沙箱机制,但 Dahl 认为这并不是一个理想的解决方案,因为它会带来性能开销,而且不够灵活。

构建系统 (GYP)

另一个问题是 Node 的构建系统 GYP。GYP 是一个复杂的构建系统,它需要用户具备一定的编程知识才能使用。这使得 Node 的构建过程对许多用户来说非常困难。为了解决这个问题,Node 社区后来转向了更简单易用的构建系统,比如 npm 和 Yarn。

package.json

最后,Dahl 还提到了 package.json 文件的问题。package.json 文件是一个 JSON 格式的文件,它包含了有关 Node 项目的各种信息,比如项目名称、版本、依赖项等。Dahl 认为,package.json 文件的设计存在一些问题,比如它很容易被损坏,而且它不方便管理。为了解决这个问题,Node 社区后来开发了一些工具来帮助用户管理 package.json 文件,比如 npm audit 和 npm shrinkwrap。

Deno 的诞生

Dahl 表示,他之所以要开发 Deno,是因为他想创建一个更安全、更易用、更现代的 JavaScript 运行时环境。Deno 在设计上吸取了 Node 的经验教训,它具有以下特点:

  • 安全性: Deno 采用了沙箱机制,可以有效地防止恶意代码对系统造成破坏。
  • 易用性: Deno 的构建系统非常简单易用,即使是新手也可以轻松地构建 Node 项目。
  • 现代性: Deno 支持最新的 JavaScript 特性,比如模块化、异步编程等。

Deno 的未来

Dahl 还谈到了 Deno 的未来规划。他表示,Deno 团队正在努力让 Deno 成为一个全栈的 JavaScript 平台,也就是说,Deno 可以用来开发各种类型的应用程序,包括 Web 应用、移动应用、桌面应用等。Deno 团队还计划在未来推出更多的新特性,比如对 TypeScript 的支持、对 WebAssembly 的支持等。

Node 和 Deno 的关系

Dahl 表示,Node 和 Deno 并不是竞争对手,它们可以共存。Node 在许多方面都非常成熟,它拥有庞大的社区和丰富的生态系统。而 Deno 则是一个新兴的项目,它在安全性、易用性和现代性方面具有优势。Dahl 希望,Node 和 Deno 能够互相学习,共同推动 JavaScript 生态系统的发展。