辟谣:Deno不是下一代Node.js!

见到说deno是下一代node的,我都会骂一顿。go的人借机宣传go,可以理解,毕竟人家要做营销,利益相关。对于前端开发来说,也乱下结论,不是打自己脸吗?

前端之巅的知乎号,竟然还发一篇文章《为什么我仍然认为deno是下一代node》https://zhuanlan.zhihu.com/p/37803424

作者说

我就是那个在前端之巅最早报道这个项目并且把标题起做“下一代node”的人,然后被jjc大佬狂批,我没什么资格评价deno,就在这里解释下我认为什么认为deno是下一代node,并且现在仍然坚持这么认为吧。

最近比较忙,我完全不认可这个观点。所以忍不住想聊聊这个问题

从名字来看,deno是node名字的倒置,说明deno和node存在关联

明明是新东西,名字倒置,也叫存在关联,不觉得牵强么?这是什么逻辑

如果有关联,那么在node上改,比如iojs和node,这个大家都认同。 可是你说deno和node有关联,那就只能是v8和runtime(还不敢哪种语言)了。

deno和fibjs是类似的,不基于node源码,看到弊端,想有不一样的玩法。可以说是node不擅长领域的探索,但和node无关。

这是值得尊重的和被鼓励的,node发展到今天,已经超过了9年时间,确实存在很多弊端,代码已经很难重构了, 好处是稳定,大家除了优化性能,想的都是怎么兼容老的api

在readme文档里,也多次提到node和npm,并且部分特性特别有针对性,就是针对node生态的现存的问题

这话更是笑话。

README里原话:No package.json, no npm. Not explicitly compatible with Node.

在deno世界里,完全否定package.json,npm,也不考虑兼容node。

关于模块管理,貌似就那几种方案,npm v2和npm v3等基本都尝试过。从没有一个社区生态见过这么大量的模块,到目前为止 虽然有很多弊端,但没有更好的解决方案。其他语言里也没有,不服你列一下。

ry在回答“Deno vs Node.js”的时候,说它们最大的区别就是一个可以run,一个不可以,虽然是玩笑话,另外还提到“it is much easier to add high-level functionality than it was in Node”

deno发布后ry在JSConf做了一次演讲谈node设计的缺陷,在PPT的第18页,他说“With this in mind, I have long thought about how it could be done better.... ”,后面紧接着介绍deno。 从上面可以看出deno的设计很多地方都是针对node,是对node的改进。

我要说的是deno可能才15天,node已经9年了。确实一个可以线上run,一个不可以。甚至deno只是一个demo,只是一个概念而已。

deno并不是对node的改进,最多可以说是v8和各种runtime的一个尝试。

ry创造node的时候是一个创举,ry在2012年离开社区,ry在最近半年又回归node,然后ry最近15天开源deno。这样一个神级人物,对node挑剔是正常的。 如果他非常满意,那么2012年为什么要离开社区呢?

说到这里,我想起一个段子,每个人接受别人的代码都有不适感,甚至说大部分会重构,为什么呢?

deno对node的替代

谁说deno是下一代node?为啥不是下一代go呢?

至少deno文档上没有提下一代node,一个15天的项目就上升到下一代,也是没sei的了。ry这么喜欢go,我不敢去揣测,你们来吧

好的语言,不如好的生态。何况还不知道好不好,你们就敢说是下一代?自媒体不能说不负责的话,前端之巅这样的大号更不该如此。

不负责任的媒体,求求你们别更新了,别误人子弟了

node今天已经成为大前端的基础设施,绝对的霸主,你们是羡慕嫉妒吗?日常黑node,也是无聊至极,不怕黑,但请黑到点上。

从node现在被广泛使用的场景,来看deno是否能用:

1. 跨平台:electron等,Golang本身就是跨平台的,deno肯定也将是跨平台的,甚至single exucutable在我看来主要就是为了改进这个的体验的
1. 本地:小工具/工作流或构建的核心等,我想deno能用在这些方面是毫无疑问的,deno不是不能用文件系统和网络,只是需要flag开启而已。
1. 服务端:web服务器。作为web服务器你需要响应HTTP Request,这一点在文档里没有很好的说明,也是争议最大的地方,
但我在deno的roadmap里找到这两句:
Add ability to open TCP sockets and listen for connections.
Add ability to receive HTTP connections (using net/http to parse) should try to use the same Request/Response types as fetch()
我想deno能用作web服务器是没有争议的。
因此,在Node的主要使用场景,deno都将可以替代。
  • 1)不向后兼容,能完全替代,node用了9年,deno要用多久呢?那时你还写前端吗?不好说吧

  • 2)换个角度,deno能替代node,deno是不是也能替代java,php,py,ruby呢?如果是,那么这句话就有颜色的屁话!

  • 3)node的web完善做到今天这地步,还有很多bug,一个完全不想兼容node的deno能做web服务器,是没啥争议,呵呵呵,rust/haskell也可以能做web服务器,真的,没开玩笑

node代码量已经很大了,那么多逻辑,思考,pr,不是一朝一夕就能迁移过去。更何况npm生态呢?

deno存在颠覆可能,但绝不是下一代node。比如koa当时号称是下一代Node web框架,相对于express等来说,它在异步流程控制,中间件机制上的颠覆 不为过,都是基于node的,都是web框架,有重大改进,当时还过于新,从0.12到node 7.6开始发布koa正式版。。。。

如此对比,deno是下一代node的说法不是明显有问题吗?问题都不在一个维度上,不知道造谣的人是出于啥目的,呵呵呵。

如何理解deno兼容浏览器

这个也是我之前没有想清楚的,兼容浏览器是要渲染HTML和CSS吗?那是不是还要加个WebKit?
不过现在我认为这里指的其实是兼容之前的ES5,现在的ES6等等各种版本的JavaScript,因为在简介里deno说自己是TypeScript运行时,对于不了解TS和JS关系的吃瓜群众也许还以为它不能运行JS了,但实际上是可以的,所以特别加上这句说明一下。

没想清楚就瞎逼逼,还用前端之巅大号,这是让我去怀疑前端之巅的水平么?

看评论里说webassembly,参加Googleio看到autocad在wa上的实现是很震撼的。参加giac看到全面直播在wa上视频编解码的实践,确实很有意思

浏览器只是宿主环境而已,用啥写并不重要!

不能证明是下一代,你们这帮无良媒体说下一代,不是自己打脸么?

deno不能继承node的生态不能证明不是下一代,各种ng不兼容上一代太正常了,正因为node生态本身不能诞生node ng,才需要重开炉灶造个新轮子;
deno的功能和node不是1:1对应也不能说明不是下一代,做到相似就够了,即使deno缺点什么,我相信很快会有插件或者wrapper来补全的。
我的理解当然有缺失和不对的地方,欢迎各位大佬来教育,不过不要把我们和其它标题党并列,谢谢。

不能证明是下一代,你们这帮无良媒体还说下一代,不是自己打脸么?

前面说了,有颠覆的可能,但和node无关,新东西如果真的好,大家都喜欢用的。只是未来能补上的成本有点大。想想node早期那帮大神,和早期写ts的人

“采坑踩到高潮,痛并快乐着。。。”

node的问题

今天的node的问题

  • 是否需要改?

现在的node足够用,稳定,高效,学习成本低,跨端,未来前景无限。 现在除了追赶v8特性外,几乎无大改版,也不需要。

  • 能不能改?

已经很难做改变了,无论是原理,还是历史包袱,我想都是很难的,响马大哥在fib做了很多尝试,是很成功的,但很难将fiber加到node代码里 牵一发,很可能动全身。

fibjs 在框架层使用 fiber 隔离了异步调用带来的业务复杂性,将 io 的异步处理封装为更加直观的同步调用,工程师只需要按照通常的同步业务逻辑编写代码,即可享有异步处理带来的巨大便利。

有更多的分支,有更多的选择是好事

  • 关于deno

关于deno是反node,还是demo,都不重要,是v8 on go,还是ts on v8也不重要,毕竟才十五天,观望就好。deno 更像是做了 node 不太好做的事情,反而不像要全盘接替 node,虽然有这个能力,但是还要大量的人力耕耘个 10 年。

之前osc有一篇Ryan Dahl:Node 失误太多无力回天,Deno 前景明朗 .https://www.oschina.net/news/96767/design-mistakes-in-node 这篇是标题党,请处理,别误导他人

ry是反思node的问题,他是为了介绍(推广)deno,当初node设计没法落地的点,不代表node现在的前景

ry的ppt里是design-mistakes-in-node,看不懂英文单词么?

  • 1) 什么叫node无力回天,这话明显不合适,deno和node思考的问题不是同一维度,这话说的不合适

  • 2)deno明朗也不合适,一个半个月左右的开源项目,直接说明朗,不是标题党是什么?

  • 3)社区不该带主观态度的去评论

最后标题改成了《Ryan Dahl:Node 设计失误值得反思,Deno 将汲取经验》

希望大家都能有自己的判断力,别以讹传讹,被利用了都不知道。jjc大神的几篇文章还是做了深入研究的。

deno的出现,对node不会有任何影响,如果deno真的很好,大家从node转过去,也未尝不是好事。只是在局势明朗前,切勿乱下结论,耽误他人,也同时拉低了自己的格调。

今年前端大会开始有node专场,狼叔已升级成为大会出品人(GIAC、GMTC、GITC),招聘、用人、生态依然很好,大家放心玩

少抱怨,多思考,未来更美好

全文完

欢迎关注Cnode官方公众号【node全栈】

如果想参与评论,请点击阅读原文链接,进入国内最专业的cnode论坛

你身边如果有朋友对Node.js或全栈感兴趣,可以转发给他们看看哦,O(∩_∩)O先谢过

辟谣:Deno不是下一代Node.js!相关推荐

  1. Deno 并不是下一代 Node.js

    2019独角兽企业重金招聘Python工程师标准>>> 这几天前端圈最火的事件莫过于 ry(Ryan Dahl) 的新项目 deno 了,很多 IT 新闻和媒体都用了标题:" ...

  2. 什么是 Deno,它与 Node.js 有何不同?

    Node.js 是用于服务器和本地机器的事实上的 JavaScript 运行时.它很受欢迎,用途广泛,并得到了强大社区的支持.Deno 是一个更新的运行时,旨在解决 Node.js 的一些缺点.这就是 ...

  3. Deno入门教程:Node.js 的替代品

    转自:微点阅读  https://www.weidianyuedu.com 这几天假期,我学习了一下 Deno[1].它是 Node.js 的替代品.有了它,将来可能就不需要 Node.js 了. 这 ...

  4. node 更新_被创造者嫌弃,Node.js 如何应对来自 Deno 的挑战

    (给前端大全加星标,提升前端技能) 转自:OSC开源社区 JavaScript 运行时 Node.js 于日前更新到了 15 版本,该软件自发布至今已走过了 11 年的岁月.但在今年 5  月,其竞争 ...

  5. 要取代 Node.js 的 Deno 还活着吗?

    作者 | Fernando Doglio 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 早在 2020 年 5 月,我就写了一篇介绍 Deno 的文章,后来还写了一本书.我喜欢 Den ...

  6. 为什么 Deno 没有众望所归?超越 Node.js 还要做些什么?

    作者 | 韩亦乐       责编 | 欧阳姝黎 译者序 正文开始 Deno 是一个旨在改进甚至替代 Node 的 JavaScript / TypeScript 运行时.它拥有众多的功能和广泛的关注 ...

  7. Deno 会取代 Node.js 吗?

    [CSDN 编者按]几天前,Node 之父 Ryan Dahl 及 Deno 团队为我们正式带来了 Deno 1.0,据官方介绍,这是一个 JavaScript/TypeScript 运行时,使用 V ...

  8. 【JSConf EU 2018】Ryan Dahl: Node.js 的设计错误

    在稍早前的 JS Conf Berlin 上,被称为 Nodejs 之父的 Ryan Dahl 发表了<10 Things I Regret About Node.js>演讲,并且发布了新 ...

  9. 2020 年 Node.js 开发者调查报告

    导读:本次调查由阿里巴巴.腾讯等公司领衔,调查时间从 2020 年 2 月至 4 月,以中文进行.截止至 4 月 10 日共有 1113 名受访者参加调研.本报告将从 Nodejs 开发者人群.应用场 ...

最新文章

  1. Ajax传递路径问题及解决
  2. 【语音SBC算法】基于正交滤波器组的语音SBC算法设计与实现
  3. 「后端小伙伴来学前端了」记录自己的踩坑第一天 | CSS:vertical-align 属性
  4. 下图所示的PCB(进程控制块)的组织方式是(),图中()。【最全!最详细分析】
  5. 微信小程序之通过Canvas生成图片保存到手机相册
  6. 作者:姚阳(1979-),女,广州市社会科学院经济学副研究员。
  7. Bootstrap3 带条纹的表格样式
  8. 两种查找bapi的方法
  9. Java String、StringBuffer、StringBuilder区别
  10. ipsec nat-t
  11. STM32开发工具-keil5安装
  12. 神经网络软件有哪些,神经网络分析软件
  13. H264码流中SPS PPS SEI概念及详解
  14. 《中兴之路》3、神箭震天山——大汉军魂与耿恭的救赎
  15. nginx/tengine限制流量如何配置
  16. vi/vim的一些干货命令及快捷键(跳转最后一行,跳转行末等)~舒服!!!
  17. 酷桌面:IPAD上体验office的炫“酷”移动办公应用
  18. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新
  19. kali linux基本口令_kali linux 基本命令(第一批)
  20. 美国的网络空间安全国家战略补充材料

热门文章

  1. 阿翔编程学-WebService介绍及使用
  2. 阿翔编程学-Axis
  3. 2020Web前端的学习之路,以及反省自身的不足之处。
  4. 看江湖老炮用尽洪荒之力解读网络协议(下)
  5. ssm+jsp计算机毕业设计CheatEngine学习系统4i3k0(程序+LW+源码+远程部署)
  6. 在DCOM配置中找到Microsoft Office Word 97 - 2003 文档
  7. docker 中 --privileged 参数
  8. 如何获取LINUX主机所有的IP
  9. Android APP上线必不可少的应用市场!
  10. 在visual studio2019中编写Qt5.14版本的程序 BV1g4411H78N