爱因儿科技|开发人员更喜欢 Deno 的五大原因,JavaScript

本文最初发布于Medium网站 , 经原作者授权由InfoQ中文站翻译并分享 。
【爱因儿科技|开发人员更喜欢 Deno 的五大原因,JavaScript】NodeJS的创造人RyanDahl刚发布了一个新的运行时Deno , 旨在解决Node存在的许多缺陷 。 像大家一样 , 我一开始也以为这只是又一个JS框架 。 但是深入了解过Deno的各项优点之后 , 我意识到了Deno正是2020年的今天 , 后端Javascript开发人员所需要的东西 。 在这篇文章中 , 我们就来看一下JavaScript开发人员为什么在使用Deno时能比Node获得更流畅、更现代化的体验 。
现代化的Javascript——ES模块
爱因儿科技|开发人员更喜欢 Deno 的五大原因,JavaScript
文章图片
如果你也像我一样是一位React开发人员 , 你会注意到使用NodeJS导入软件包的语法是不一样的 。 这是因为Node面世于2009年 , 这些年来Javascript得到了大量更新和改进 。
在React(和Deno)中 , 我们使用importpackagefrom'package’语法 , 而在Node中我们使用constpackage=require(“package”)语法 。
Deno的ES模块import有两个优势:
通过import , 你可以有选择地从包中加载所需的部件 , 从而节约了内存空间 。 加载与require是同步的 , 而import则会异步加载模块 , 从而提高了性能 。如上图所示 , 我们正在从一个URL导入moment包 , 这也是Deno的另一个优势 。
去中心化包
使用Deno时 , 你不用再依赖NPM了 。 是的 , 不再需要package.json 。 每个包都是从一个URL加载的 。
在NodeJS中 , 要使用一个软件包 , 你必须先从NPM安装它:
?复制代码
npmimoment等它安装完毕后 , 再将其包含在你的应用中:
?复制代码
constmoment=require(''moment'')另外 , 不管是谁要在本地运行你的NodeJS存储库 , 都必须从NPM安装所有依赖项 。
在Deno中 , 这个包是从一个URL导入的 。 所以要使用moment时 , 只需导入https://deno.land/x/moment/moment.ts即可 。
爱因儿科技|开发人员更喜欢 Deno 的五大原因,JavaScript
文章图片
Deno中软件包这块的另一大优势是 , 每个包安装完成后都缓存在硬盘驱动器上 。 也就是说软件包的安装过程只运行一次 。 要在任何地方再次导入依赖项时 , 并不需要重新下载 。
TypeScript原生支持 , 无需配置
爱因儿科技|开发人员更喜欢 Deno 的五大原因,JavaScript
文章图片
在NodeJS中使用TypeScript需要很多准备工作 。 你必须安装typescript , 更新package.json、tsconfig.json , 并确保你的模块支持@types 。
在Deno中 , 你要做的就是将文件另存为.ts而不是.js , TypeScript编译器已经准备就绪了 。
顶级await——在异步函数之外使用await
爱因儿科技|开发人员更喜欢 Deno 的五大原因,JavaScript
文章图片
在Node中 , 我们只能在一个异步函数中访问await关键字 。
而在Deno中 , 你可以随时随地await任何事情 , 而无需将其包装在一个异步函数中 。
几乎所有的Javascript应用都包含许多异步函数 。 这一改进让代码变得更加简洁明了 。
访问BrowserAPI(Window , Fetch)
要使用Javascript发出HTTP请求 , 我们可以使用FetchAPI 。
在NodeJS中我们没有访问BrowserAPI的权限 , 因此我们不能直接调用一个fetch函数 。 我们必须先安装这个包:
?复制代码
npminode-fetch然后导入它:
?复制代码
constfetch=require(''node-fetch'')这样我们才能调用一个fetch 。
Deno原生支持访问window对象 , 于是你可以调用fetch(“https://something.com”)以及BrowserAPI中的其他任意内容 , 而无需安装任何库 。


推荐阅读