为什么我仍然认为deno是下一代node

RosalindHunter 发布于9月前 阅读401次
0 条评论

发在回答里没什么人看到,于是发在这里。

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

原因总结起来有下面这么几条:

deno与node的渊源

  • 从名字来看,deno是node名字的倒置,说明deno和node存在关联
  • 在readme文档里,也多次提到node和npm,并且部分特性特别有针对性,就是针对node生态的现存的问题
  • 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对node的替代

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

  • 跨平台:electron等,Golang本身就是跨平台的,deno肯定也将是跨平台的,甚至single exucutable在我看来主要就是为了改进这个的体验的
  • 本地:小工具/工作流或构建的核心等,我想deno能用在这些方面是毫无疑问的,deno不是不能用文件系统和网络,只是需要flag开启而已。
  • 服务端:web服务器。作为web服务器你需要响应HTTP Request,这一点在文档里没有很好的说明,也是争议最大的地方,但我在deno的 roadmap 里找到这两句:

Add ability to open TCP sockets and listen for connections.

我想deno能用作web服务器是没有争议的。

因此,在Node的主要使用场景,deno都将可以替代。

如何理解deno兼容浏览器

这个也是我之前没有想清楚的,兼容浏览器是要渲染HTML和CSS吗?那是不是还要加个WebKit?

不过现在我认为这里指的其实是兼容之前的ES5,现在的ES6等等各种版本的JavaScript,因为在简介里deno说自己是TypeScript运行时,对于不了解TS和JS关系的吃瓜群众也许还以为它不能运行JS了,但实际上是可以的,所以特别加上这句说明一下。

最后

  • deno不能继承node的生态不能证明不是下一代,各种ng不兼容上一代太正常了,正因为node生态本身不能诞生node ng,才需要重开炉灶造个新轮子;
  • deno的功能和node不是1:1对应也不能说明不是下一代,做到相似就够了,即使deno缺点什么,我相信很快会有插件或者wrapper来补全的。

我的理解当然有缺失和不对的地方,欢迎各位大佬来教育,不过不要把我们和其它标题党并列,谢谢。

查看原文: 为什么我仍然认为deno是下一代node

  • beautifulbutterfly
  • bluerabbit
需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。