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

Deno能吞下Node.js吗?

时间:2023-03-17 10:40:11 科技观察

近日,Node.js原作者RyanDahl发布了Deno1.0。有网友创作了以上漫画。Deno似乎要吞并整个Node.js社区。什么是德诺?简单来说,它是一个支持JavaScript和TypeScript的安全平台,有点像Node.js。有了Node.js,就可以让JavaScript在服务器端运行,为什么还需要Deno?其实就是两个字:不开心!Deno的作者,同时也是Node.js的作者RyanDahl想要一个有趣且强大的脚本语言平台,但目前的技术平台无法满足他。他对自己写的Python、Ruby甚至Node.js都不满意!他还专门讲了《Node.js设计的十大误区》,总让我想起了努尔哈赤的《七大恨》,不同的是努尔哈赤是反对明朝的,瑞安达尔是反对自己的。他认为Node.js有几大缺陷:1.Node模块设计的不好,还是中心化的2.需要支持很多遗留的API3.既然这样是为了安全问题,那就再做一个吧。纠正了这些缺陷。Deno有哪些重要特性?1.安全控制您编写或从其他地方导入的js/ts代码。默认情况下,您不能直接访问硬盘/网络等资源。您需要在脚本运行时对其进行授权。例如,下面的整个命令授权app.ts访问环境变量、访问网络和读取/temp目录。熟悉Java的同学马上就会想到Java沙箱(SandBox)。该程序在沙箱中运行并受到控制。你为什么这么做?一个重要的原因是很多第三方代码库都是从网上下载的。是的,这些代码可能会恶意破坏本地环境,窃取本地敏感信息。可见,Deno确实是把安全放在了比较重要的位置。有趣的是,Java默认启用访问权限。如果要限制访问,需要提供策略文件,而Deno默认关闭访问权限,就更狠了!但是我有一种感觉,这个功能并不是那么重要和紧迫。想一想,你有没有定制过Java的安全策略?大多数时候,它是默认配置的吗?现在有了Docker这样的容器,实现应用层面的隔离和授权,意义何在?2.终于有标准库了!Java同学可能感觉不多,因为一直在使用JDK中的各种内置类。但是,JavaScript一直没有标准库,很多功能依赖第三方代码,会造成取舍困难。现在Deno终于提供了一个标准库,涵盖了datetime、encoding、hash、http、log、testing等,极大方便了程序员。不过,我看了一下标准库代码:https://deno.land/std,都是用TypeScript写的。3.支持开箱即用的TypeScriptTypeScript是JavaScript的超集,支持静态类型,现在非常流行。Deno很好地支持TypeScript。你可以使用TypeScript编写程序,然后直接在Deno上运行xxx.ts。Deno会将其编译成JavaScript并在内部运行。静态打字还是很不错的!可以想象,TypeScript是用来帮忙的。Deno可以支持开发具有复杂业务逻辑的大型应用,以后再也没有人能笑话“动态酷,重构火葬场”。对于Java程序员,建议关注TypeScript。4.取消中心化代码仓库Deno的包管理方式发生了翻天覆地的变化。放弃了集中式代码仓库,直接从web导入代码:这是直接从web导入ECMAScript模块,看起来挺清爽的。当然,导入的模块会缓存在本地,下次可以直接访问。但是分布式包管理真的那么好吗?想想代码中各种网站的import语句,就觉得有点不爽。Python有pip,Ruby有gem,Java有maven,它们的背后是一个中心化的仓库,用起来非常爽快。现在Deno提供了一个非常初级的第三方库搜索页面:https://deno.land/x,我想以后必然会有第三方库托管网站,大家还是从同一个搜索下载软件放置袋子。5.内置工具多。JavaScript生态中的工具太多了,最好统一起来。Deno顺应了这一趋势,提供了打包、格式清理、测试、安装、文档生成、linting、脚本编译等一揽子解决方案,内置可用,无需到处安装下载,这点不得不赞。总结不得不佩服RyanDahl,做一个Node.js就够“吹牛”一辈子了,但他还是能革新自己的人生,推出像Deno这样的新平台,为利益打工,不断创新,这就是惊人的。Deno非常激进,直接采用ECMAScript模块,摒弃了NodeModules,这也使得它与现有的JavaScript生态不兼容。现在说Deno取代Node.js还为时过早。毕竟这只是一个1.0版本,很难直接和一个发展了10多年的平台进行比较。Deno还没有在生产环境中进行过测试,我们不知道它在某些特殊情况下会有怎样的表现。也许再过一段时间,就会有“先锋”公司分享经验,解决Deno的陷阱。届时,Deno将成为一个真正有用的平台。让我们拭目以待。【本文为专栏作家“刘欣”原创稿件,转载请通过作者微信获取授权公众号编码】点此查看该作者更多好文