JavaScript开发人员更喜欢Deno的五大原因

本文最初发布于Medium网站,经原作者授权由InfoQ中文站翻译并分享。

NodeJS的创造人Ryan Dahl刚发布了一个新的运行时Deno,旨在解决Node存在的许多缺陷。像大家一样,我一开始也以为这只是又一个JS框架。但是深入了解过Deno的各项优点之后,我意识到了Deno正是2020年的今天,后端Javascript开发人员所需要的东西。在这篇文章中,我们就来看一下JavaScript开发人员为什么在使用Deno时能比Node获得更流畅、更现代化的体验。

现代化的Javascript——ES模块

如果你也像我一样是一位React开发人员,你会注意到使用NodeJS导入软件包的语法是不一样的。这是因为Node面世于2009年,这些年来Javascript得到了大量更新和改进。

在React(和Deno)中,我们使用import package from 'package’语法,而在Node中我们使用const package = require(“package”)语法。

Deno的ES模块import有两个优势:

  1. 通过import,你可以有选择地从包中加载所需的部件,从而节约了内存空间。
  2. 加载与require是同步的,而import则会异步加载模块,从而提高了性能。

如上图所示,我们正在从一个URL导入moment包,这也是Deno的另一个优势。

去中心化包

使用Deno时,你不用再依赖NPM了。是的,不再需要package.json。每个包都是从一个URL加载的。

在NodeJS中,要使用一个软件包,你必须先从NPM安装它:

npm i moment

等它安装完毕后,再将其包含在你的应用中:

const moment = require("moment")

另外,不管是谁要在本地运行你的NodeJS 存储库,都必须从NPM安装所有依赖项。

在Deno中,这个包是从一个URL导入的。所以要使用moment时,只需导入https://deno.land/x/moment/moment.ts即可。

Deno中软件包这块的另一大优势是,每个包安装完成后都缓存在硬盘驱动器上。也就是说软件包的安装过程只运行一次。要在任何地方再次导入依赖项时,并不需要重新下载。

TypeScript原生支持,无需配置

在NodeJS中使用TypeScript需要很多准备工作。你必须安装typescript,更新package.json、tsconfig.json,并确保你的模块支持@types。

在Deno中,你要做的就是将文件另存为.ts而不是.js,TypeScript编译器已经准备就绪了

顶级await——在异步函数之外使用await

在Node中,我们只能在一个异步函数中访问await关键字。

而在Deno中,你可以随时随地await任何事情,而无需将其包装在一个异步函数中。

几乎所有的Javascript应用都包含许多异步函数。这一改进让代码变得更加简洁明了。

访问Browser API(Window,Fetch)

要使用Javascript发出HTTP请求,我们可以使用Fetch API。

在NodeJS中我们没有访问Browser API的权限,因此我们不能直接调用一个fetch函数。我们必须先安装这个包:

npm i node-fetch

然后导入它:

const fetch = require("node-fetch")

这样我们才能调用一个fetch。

Deno原生支持访问window对象,于是你可以调用fetch(“https://something.com”)以及Browser API中的其他任意内容,而无需安装任何库。

有了这个顶级await的优势,Deno的代码就会比Node简单很多:

还不止这些

Deno还有其他许多优点,例如默认情况下更安全、可以执行Wasm二进制文件、拥有许多内置库,等等。

本文提到的这些要点都是相互联系的,它们共同打造出了一个更现代化的JavaScript后端运行时。作为一名React开发人员,我站Deno这边。现在我可以使用import语法,在需要的任何位置编写await,无需任何配置直接使用TypeScript,甚至可以无需安装包就调用fetch。一切都非常简单。

Deno最终会取代Node吗?也许会吧。这可能需要几年时间。NodeJS生态系统非常庞大,Deno可能需要一些时间才能迎头赶上。很多Javascript开发人员最近都考虑在新项目中使用Deno,因此如果你近期想要开始做一个新项目,Deno绝对值得你研究一下。了解更多信息,请访问https://deno.land/

原文链接: https://levelup.gitconnected.com/top-5-reasons-javascript-developers-prefer-deno-over-node-b1ff01734811

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/4bv2jbPTy8X3Yk3sNYi4
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券