当前位置: 首页 > 后端技术 > Node.js

Javascript开发人员更喜欢Deno而不是Node的5大原因

时间:2023-04-03 17:23:36 Node.js

NodeJS的作者RyanDahl发布了一个新的运行时,旨在解决Node的许多缺点。您最初的反应可能是“太棒了,又一个Javascript框架?正是我需要的……”。别担心,我也有同样的反应。在了解了优势之后,我也明白了为什么Deno正是2020年后端Javascript开发人员所需要的。让我们来看看javascript开发人员使用Deno与Node以获得更流畅、更现代的体验的5大原因。1.现代Javascript-ES模块如果你像我一样是React开发者,你会注意到使用NodeJS导入包的语法是不同的。这是因为Node于2009年问世,而Javascript从那时起已经更新和改进了很多。在React(和Deno)中,我们使用importpackagefrom'package'语法导入包,而在Node中,我们使用constpackage=require("package")语法。ESModulesimport的优势在于两个原因:通过import,你可以有选择地只从包中加载你需要的部分,这样可以节省内存。加载与require同步,而import异步加载模块,提高性能。如果您在上图中注意到,我们正在从URL导入moment包,这将我们带到了Deno的下一个优势。2.去中心化包使用Deno,不再依赖NPM。是的,不再需要package.json,每个包都是从URL加载的。在NodeJS中,要使用一个包,你必须首先从NPM安装它:npmimoment等待它安装,然后将它包含在你的应用程序中:constmoment=require("moment")另外,任何时候有人想要运行时您本地的NodeJS存储库,所有依赖项都必须从NPM安装。在Deno中,包是从URL导入的,所以如果你想使用moment,只需导入https://deno.land/x/moment/mo...。Deno中包的另一个优点是每个包在安装后都会缓存在硬盘上。这意味着包的安装只发生一次,如果你想在任何地方再次导入它,你不必下载依赖项。3.TypeScript是原生的,不需要配置让TypeScript与NodeJS一起工作是一个多步骤的过程。您必须安装TypeScript、更新package.json、tsconfig.json,并确保您的模块支持@types。在Deno中,您所要做的就是将文件保存为.ts而不是.js,并且已经安装了TypeScript编译器。4.顶层await——在异步函数外使用await函数在Node中,await关键字只能在异步函数内访问。使用Deno,您可以在任何地方等待任何东西,而无需将其包装在异步函数中。几乎所有的Javascript应用程序都包含许多异步函数,这种升级使代码更干净、更简单。5.访问浏览器API(Window,Fetch)要使用javascript进行HTTP请求,我们可以使用FetchAPI。在NodeJS中,我们无权访问BrowserAPI,因此我们无法直接调用fetch函数。我们必须先安装包:npminode-fetch然后导入包:constfetch=require("node-fetch")然后我们才能进行调用。Deno本身可以访问window对象,这意味着您可以继续调用fetch("https://something.com")和浏览器API中的任何其他对象,而无需安装任何库。结合顶级await的优势,你现在可以看到Deno代码比Node代码简单得多:它还不止于此Deno还有很多其他优势,比如默认更安全,执行Wasm二进制文件,有许多内置-在图书馆中,并且这个清单还在继续。本文中提到的所有要点都是相互关联的,共同构成了一个更现代的2020后端javascript运行时。作为一名React开发者,我对Deno产生了共鸣。现在我可以使用import语法,在任何地方编写await,无需任何配置即可使用TypeScript,甚至无需安装包即可调用fetch。很简单。Deno最终会取代Node吗?或许。这可能需要数年时间。NodeJS生态系统非常庞大,Deno可能需要一些时间才能赶上。但是Javascript开发人员最近一直很喜欢Deno的新项目,所以如果您打算很快开始一个新项目,那绝对值得研究一下。访问deno.land以获取有关如何开始的更多信息。来源:https://levelup.gitconnected.com,作者:DanHalperin,翻译:公众号《前端全栈开发者》