NodeJS的做者Ryan Dahl发布了一个新的运行时,旨在解决Node的许多缺点。你最初的反应多是“哦,太棒了,另外一个Javascript框架?正是我所须要的...”。别担忧,我也有一样的反应。在了解了优点以后,我也看到了为何Deno正是2020年后端Javascript开发人员所须要的。让咱们来看看javascript开发人员使用Deno vs. Node得到更流畅,更现代的体验的5大缘由。javascript
若是你是像我这样的React开发人员,你会注意到使用NodeJS导入软件包的语法是不一样的。这是由于Node于2009年问世,此后对Javascript进行了大量更新和改进。前端
在React(和Deno)中,咱们使用 import package from 'package'
语法导入包,而在Node中,咱们使用const package = require("package")
语法。java
ES Modules导入的优点在于两个缘由:node
import
,能够有选择地只从包中加载须要的部分,这节省了内存。require
同步,而 import
则异步加载模块,从而提升了性能。若是你在上图中注意到,咱们正在从URL导入moment包,这将带给咱们Deno的下一个优点。git
使用Deno,再也不依赖NPM。是的,再也不须要 package.json
,每一个包都是从URL加载的。npm
在NodeJS中,要使用软件包,必须首先从NPM安装它:json
npm i moment
复制代码
等待它安装,而后将其包含在你的应用程序中:后端
const moment = require("moment")
复制代码
另外,任什么时候候有人要在本地运行你的NodeJS仓库时,都必须从NPM安装全部依赖项。浏览器
在Deno中,该包是从URL导入的,所以,若是要使用moment,只需导入https://deno.land/x/moment/moment.ts。缓存
关于Deno中软件包的另外一个巨大优点是,安装后每一个软件包都缓存在硬盘驱动器上。这意味着软件包的安装仅发生一次,若是要在任何地方再次导入依赖项,则没必要下载它。
让TypeScript与NodeJS一块儿工做是一个多步骤的过程。你必须安装TypeScript,更新package.json,tsconfig.json,并确保你的模块支持@types。
在Deno中,你所要作的就是将文件另存为 .ts
而不是 .js
,TypeScript编译器已经安装好了。
在Node中,只能在异步函数中访问 await
关键字。
使用Deno,你能够随时随地 await
任何事情,而无需将其包装在异步函数中。
几乎全部Javascript应用程序都包含许多异步函数,此次升级使代码更加干净和简单。
要使用javascript发出HTTP请求,咱们可使用Fetch API。在NodeJS中,咱们没有访问Browser API的权限,所以咱们不能直接调用获取函数。咱们必须首先安装该软件包:
npm i node-fetch
复制代码
而后导入包:
const fetch = require("node-fetch")
复制代码
只有这样,咱们才能进行调用。
Deno原生有权访问 window
对象,这意味着你能够继续调用fetch(“ something.com”)以及Browser API中的任何其余对象,而无需安装任何库。
结合顶层的await优点,你如今能够看到Deno代码比Node代码简单得多:
Deno还有许多其余优势,例如默认状况下更安全,能够执行Wasm二进制文件,具备许多内置库,而且列表还在继续。
本文提到的全部要点都是相互联系的,共同造成一个更现代的2020年后端javascript运行时。做为一个React开发人员,我与Deno共鸣。如今,我可使用导入语法,在任何须要的地方编写await,使用TypeScript而不进行任何配置,甚至能够调用fetch而无需安装软件包。很简单。
Deno最终会取代Node吗?也许。这可能须要几年时间。 NodeJS生态系统很是庞大,Deno可能须要一些时间才能遇上。可是Javascript开发人员最近一直喜欢Deno的新项目,所以,若是你打算尽快开始一个新项目,那么绝对值得研究。有关如何开始的更多信息,请访问deno.land。
来源:levelup.gitconnected.com,做者:Dan Halperin,翻译:公众号《前端全栈开发者》
本文首发于公众号 《前端全栈开发者》 ID:by-zhangbing-dev,第一时间阅读最新文章,会优先两天发表新文章。关注后私信回复:大礼包,送某网精品视频课程网盘资料,准能为你节省很多钱!