[00:00]
Deno的话 他们被Cloudflare收购了但说实话这其实也标志着他们创业失败了但是Deno它真的失败了吗
[00:10]
大家好 这里是AsyncTalk主播 AnnatarHe今天的话我们来去聊一个前几天刚发的一个新闻是Deno其实我个人是比较关心Deno的发展因为Deno在最开始他出来的时候一些理念还是非常好的
[00:24]
我其实有一些很小的一些小项目也是拿Deno来去做测试的这次Deno的话他们被Cloudflare收购我们当然应该恭喜就是他们终于拿到了一些成果但说实话这其实也标志着他们创业失败他们没能上市
[00:40]
他们也没能去有一个更好的价格当然我不知道Cloudflare收购的价格是怎么样的但我相信应该不会到他们最开始所期望的那种吞噬世界的那种情况但我们并不聊商业我们只是来去回顾一下说Deno Deno它最开始是
[00:58]
因为什么原因出现了Node是从2009年开始的话然后是因为Ryan他去做了一个演讲当然他最开始实现了一个初版的Node非常基础的一个版本那他当时对于业界的震撼是非常大的因为像是那个时候的话JavaScript
[01:15]
它只能运行在浏览器里面去做一个非常无聊的脚本但Node它带来了非常不一样的东西Node它带来的是JavaScript终于可以运行在服务端了它等于说为web前端拓展出来了另外一片非常非常庞大的一个一块业务同时它也解锁了
[01:34]
非常非常多的一种可能性但是JavaScript它运行在服务器的更大的冲击更多的是关于JavaScript的思想它终于在服务端上开始蔓延开始蚕食其他的概念因为在这之前的话你知道在服务端写程序它都是一个同步的概念你比如说
[01:53]
这个API请求过来了要怎么办呢那我就首先解析那调DB可能是要先调一个Cache然后做计算调DB然后去返回用户那这一条都是一个串行的过程它就是你如果之前拿PHP或者Python的话它就是每一个请求过来
[02:13]
它是开一个process那这个时候的话就慢慢去朝着Thread的方向来去做那之后的话还有更细粒度的像是什么fiber进程但它革命性的改变了这个思路吗其实并没有我说难听一点就是体力活的
[02:28]
方式来去提升一些网络请求的吞吐量但JavaScript它不一样我相信你面试的时候你作为一个前端面试的话次次应该都会有问你什么JavaScript的这个event loop怎么做的那我们说回Node.js那Node.js
[02:43]
在之后的话发生了什么问题呢那就是Node.js是Ryan它第一个版本写的他当时可能只是想来先去实现一下来去做一个小版本的验证OK发现它可以工作他当时据他自己说他就走了然后他去做一些其他的事情像是写Go
[03:01]
但是在这最后的话Node.js是有很多问题的比如说你怎么在server发一个请求那你可以看到说在之前版本的话其实我们是去调一个std lib里边的HTTP方法然后这个HTTP方法它有一些Get或者说发请求的
[03:16]
一些method它对于其他像是后端语言来说的话确实是这样但是它对于在我们以前端视角来看这个事情的话它对吗其实它不对简简单的我就说发请求这件事情其实它是有标准的方法的之前的话其实也不是很标准
[03:32]
XMLHttpRequest对吧它也不是很标准但在之后的话它是有一些fetch方法的然后这个fetch方法就是说我们从客户端发起一个请求到服务端然后拿回一个返回但在Node出现的时候的话这个标准其实并不是
[03:45]
很友好的那标准这个东西它有什么意义呢其实它的意义是非常非常巨大的因为它涉及到一个可读性的问题以及一个可维护性的问题因为它会极大的降低你的学习成本当你是一个纯前端你去转server的时候
[04:01]
在前端你发请求是拿fetch去发你自然的就想到说那我在server我能不能还拿fetch来去发请求那这种符合直觉的方式其实才应该是一个正确的开发方式那它到我们这个AI时代的话就更为明显了
[04:17]
因为在AI时代的话语义化对于AI来说是一个最核心最核心的东西它没有东西比语义化更重要所以标准化它非常大的影响了语义化以及长期的可维护性以及学习成本所以标准化是一个可能对Node.js来说最致命的一个问题当然Ryan他声称
[04:37]
有很多其他问题了比如说像权限对吧那以及像npm包他怎么样去import一些第三方的library这些事情还有说top-level promise async await这种东西其实每一个都是
[04:53]
挺严重的一个问题所以Ryan他起家去做了一个Deno然后Deno的话确实是在这些方面做的努力还是蛮多的他作为这样一个runtime的话他做的还是挺不错的然后他推动了很多事情包括像是很出名的一个binary
[05:09]
因为你在做一个CLI程序的时候然后怎么样让其他人用起来他就打包成一个binary来让用户用像是大家都知道Bun在这点做得非常好的然后它确实也可以用它对于整个工具链也会比较像Go一点它的lint format其实我觉得做得还不错
[05:27]
但它作为一家公司其实我觉得是有点失败的因为像是这种产品它怎么样去做盈利呢它其实基本上就卖云服务然后让别家的产品去host它在云服务上面然后它靠这个做一些小的盈利你可以看到说这个竞争极为激烈
[05:43]
你等于说是说在和AWS在抢蛋糕还有像微软谷歌这种庞然大物那新兴的话更有像是Cloudflare像是Vercel这样的产品对于Deno来说竞争还是蛮大的那当然他之后又去做了一些像是JSR就是Package Registry
[06:03]
这样的东西说实话对于npm的震撼来说只能说可有可无吧那一直到前几天Deno宣布加入Cloudflare那这就是它的结局了Deno作为一家公司的话它的结局其实还是令人唏嘘的然后他一直在想办法比如说
[06:21]
做celld这个项目但收效甚微吧但是Deno它真的失败了吗我不觉得Deno失败了因为Deno在最开始他声称要去解决的那些问题到现在为止你回过头看Node.js多多少少都是有一些提升的就尤其是针对这些点那像是它的另一个竞争对手Bun
[06:42]
也是很大程度上去遵循了Deno的一些设计点一些思想那像是Deno里边最为出名就是它可以原生写TypeScript去执行Node里边的24版本的话它也支持像是安全一些权限的限制那Node最近也是有的不过它例如没有
[07:02]
Deno那么细了但它也有对吧它能用那么像是top-level的Promise以及async await现在也都有了像是API的标准化现在的话Node其实做的还是不错的对所以Deno
[07:14]
最开始声称的点到现在的话Node都有一些解决因为它现在吸取了一些Deno的一些想法一些设计那我们说回Deno那Deno的话它的商业成绩并不是很理想但是Deno的理念却在Node.js
[07:29]
以及Bun上面得到了很大的一个体现在Deno出来的时候它定义了说JavaScript的runtime它应该是一个什么样子随后Deno它率先表态来去做出来这样一些改进那Node虽然它进展比较迟缓
[07:44]
但它也算是跟上了那Bun的话它另辟蹊径最近卖身给Anthropic过得可是太滋润了当然它其实也是遵循了很多Deno当时希望Jaloscope runtime去实现的一些东西那我更想表达的是说有些时候成功和失败
[08:02]
概念我们是要打引号的因为看起来Deno它失败了但是对于Jaloscope的用户以及整个业界来说的话Deno的理念得到了实践Deno的追求得到了结果好的那大家可以在评论区来聊一聊说你有没有用过Deno你用过Deno的哪些特点你怎么看待Deno好的
[08:20]
那我们下期节目再见拜拜