当前位置: 首页 > 科技观察

另一个后浪:Deno会取代NodeJS吗?

时间:2023-03-18 21:28:52 科技观察

本文转载自公众号《阅读核心》(ID:AI_Discovery)Deno1.0.0版本近期发布。它是由RyanDahl发明的,他还因发明Node.js的“小工具”而闻名。Node.js听起来很熟悉吗?这是否意味着Deno已经有效地自动取代了Node,我们应该开始规划重构冲刺?现在下结论显然还为时过早,但以下事实可能会起到很大的作用决定发布Deno。1.从头说起,2018年,Ryan在演讲中谈到了Node中的10大问题。在演讲的最后,他展示了Deno,这只是他当时正在构建的一个小系统,也就是众所周知的Node.js2.0版本。他对原始版本进行了改进,使其更加安全。两年后,Deno1.0正式发布。它的后端有一个全新的JavaScript运行时,但它是用Rust而不是C++编写的。它基于Tokio平台(提供JavaScript所需的异步运行环境),仍然运行Google的V8引擎。2、有什么新鲜事吗?我们不仅仅是在谈论与现有Node.js完全兼容的新JavaScript运行时环境。中缺少一些东西。1.安全集成默认情况下,Node.js允许用户访问所有内容,这意味着您可以读取和写入文件系统、发出请求、访问环境变量等。虽然拥有此访问权限对开发人员来说是有益的,但如果您在编写自己的代码时不小心,它也会带来安全风险。因此,Deno使用命令行参数来启用或禁用对不同安全功能的访问。如果你需要允许你的脚本访问/etc文件夹,你可以输入:deno--allow-read=/etcmyscript.ts你的代码将从该文件夹读取,你会得到一个安全异常提示。这类似于其他平台处理安全性的方式。如果你是安卓用户,你一定收到过很多应用的请求,让它们访问你手机中的不同系统(比如通讯录、通话、文件夹等)。同样在这里。可以通过在执行脚本的命令行上使用这些标志来提供代码所需的权限。2.更完整的标准库JavaScript从第一个版本的Node开始改进了它的标准库,但与其他语言相比它还有很多不足之处。来源:unsplashDeno也在努力改进这一点。据说它将有一个非常完备的标准库,让开发者可以使用官方的工具来完成基本的任务,只需要使用外部库(alaNPM)就可以完成复杂的任务。本质上,Deno使用内置工具开箱即用,可以为终端文本添加颜色、操作外部数据结构(例如二进制、csv、yaml等)、生成UUID,甚至编写websocket。还有其他更基础的模块可用,例如文件系统访问、日期辅助函数、http相关函数等。3.集成TypeScript如果您是TypeScript的忠实用户,Deno将在没有外部工具的情况下帮助您完成很多工作。默认情况下,JavaScript转换可以在内部完成,因此无需担心。尽管Deno默认做了很多工作,但你可以用自己的tsconfig.json文件覆盖配置:denorun-ctsconfig.json[your-script.ts]默认模式是使用严格模式,所以任何考虑不周的编码操作会立即收到警报。4.不再需要NPM和node_modules文件夹这是个大问题。是不是太臃肿了?这种分散依赖关系的方式是错误的吗?这自然是Node最具争议的方面之一,Deno决定彻底摆脱它。那么Deno是如何处理依赖关系的呢?当前的方法是允许您从任何地方请求模块。换句话说,你可以这样做:import*aslogfrom"https://deno.land/std/log/mod.ts";您不需要拥有自己的集中式存储库,但必须小心谨慎,因为从您无法控制的第三方来源导入模块会使您处于开放和暴露状态。事实上,我们的好朋友package.json也不见了。现在通过在名为deps.ts的文件中列出模块列表及其各自的URL来简化依赖管理。你一定会问,版本控制呢?您可以在URL上指定包版本。这不是很方便,但是可以。来源:Unsplash一个普通的deps.ts文件看起来像这样://deno.land/std@v0.39.0/fmt/colors.ts”;这将重新导出模块。如果要更改模块的版本,则需要相应地简化URL。第一次执行脚本时,导入的代码会被缓存,直到使用--reload标志再次运行。5.还有什么吗?Deno还有其他特性,比如它有更多“开箱即用”的工具,包括测试运行器、调试器、文件观察器等。不过话又说回来,其中一些只是语言提供的API接口,你需要编写自己的工具来使用它们。以Deno.watchFs提供的filewatcherAPI接口为例,如果你正在寻找类似于nodemon的解决方案,那么你必须自己动手。这是解决类似问题的23行脚本:3.Deno会很快取代Node.js吗?老实说,不一定。自Node.js0.10发布以来,有些人一直在使用Nodejs,甚至在生产环境中也是如此。我们过去这样做是因为没有类似的系统。PHP、Python甚至Ruby都比不上JavaScript和后端的异步I/O模型,更不用说Java和.网。多年来,Node和JavaScript不断完善和升级以满足行业的需求。完美吗?当然不是。就像生活中的其他事情一样,编程语言很难做到完美。来源:unsplashDeno也不例外。现在这只是一个2年时间框架的想法。它尚未在生产系统中经过试验和测试、审查或应用于奇怪的、意外的用例,我们无法知道它如何处理这些边缘情况。也许一年后,我们会听到公司分享他们使用Deno的经验,他们如何解决新发现的缺陷,最终,它背后的团队将使用Deno来“充分利用它”。在此之前,Deno只是尝鲜者的玩具。它会取代Node吗?谁知道呢,让我们拭目以待!