写点什么

Deno 将于 5 月 13 日发布 1.0 版本,Node.js 会逐渐失宠吗?

  • 2020-04-07
  • 本文字数:2344 字

    阅读完需:约 8 分钟

Deno将于5月13日发布1.0版本,Node.js会逐渐失宠吗?

Deno 是 Node.js 之父 Ryan Dahl 在 2018 年 5 月发布的开源项目,其产生的背景在于 Ryan Dahl 认为当下的 Node.js 太难用了。一般人说出这种话可能会被 Diss 你行你上,但这对 Ryan 来说并不是什么难题。虽然 Deno 1.0 的版本发布数次推迟,但 Ryan 近日表示经过详细的讨论后,确认了最终发布的日期:2020 年 5 月 13 日,这也将是 Deno 项目启动的两周年纪念日。

Deno 1.0,5 月 13 号见

2018 年 5 月,Node.js 之父 Ryan Dahl 发布了新的开源项目——Deno。从项目名就可以看出其与 Node.js 千丝万缕的联系。


官方文档介绍,Deno 是一个 JavaScript / TypeScript 运行时,具有安全的默认设置和良好的开发体验,构建在 V8 引擎、Rust 语言和 Tokio 之上。(最初的 Deno 版本是用 Go 语言写就,但在第二版中移除了 Go 转而用 Rust 语言替代,因为后者具有更好的安全性。)


Deno 的目标是为现代程序员提供一个高效、安全的脚本环境。


在业界看来,Deno 目前的状态更像是一个 Demo,而 Ryan 本人当时也表示“Deno 与 Node 最大的区别在于,Node 可以用于工作,而 Deno 还不行”。但对前端开发者来说,Deno 确是一个值得学习的新项目。


此前 Deno 项目中有关 1.0 版本的 issue 做了更新,Ryan 表示:


在努力做好(Deno)这件事和推出一款可用的产品之间很难取得平衡。因为还没有在开发工具支持特性上取得实质进展,官方团队再次推迟发布日期。官方团队进行了详细的讨论,得出结论是 2 个月的时间足够了。巧合的是,这是自 Deno 问世以来的两周年纪念日。因此,我们将 2020 年 5 月 13 日定为 1.0 版本发布日期。我们鼓励贡献者在 4 月 20 日之前对 API 进行重大修改——在那之后,我们将对 API 进行完善和 bug 修复。当然,在 1.0 之后,API 将继续发展和改进,但是我们将为一些接口提供显式的稳定性保证。


Deno,这个 Node 之父的 Demo 项目,终于迎来了正式发版之日。

Node.js,并未失宠

Deno 发布之初,前端圈不少人分析其将是 Node.js 的替代品,将其称为”下一代 Node“。


狼叔此前在应前端之巅约稿时有提到,Node.js 的意义具体而言有两方面:


首先它打破了原有的前端边界,之前应用开发只分前端和 API 开发。但通过引入 Node.js 做 BFF 这样的 API proxy 中间层,使得 API 开发也成了前端的工作范围,让后端同学专注于开发 RPC 服务,很明显这样明确的分工是极好的。

其次,在前端开发过程中,有很多问题不依赖服务器端是做不到的,比如场景的性能优化,在使用 React 后,导致 bundle 过大,首屏渲染时间过长,而且存在 SEO 问题,这时候使用 Node.js 做 SSR 就是非常好的。


以上可以看出,Node.js 在眼下的大前端布局里的重要性。


另一方面,Node.js 社区的生态和繁荣度发展仍旧十分迅速。此前 InfoQ 翻译的一篇 Node.js 基金会的调查报告显示,Node.js 的使用量仍然在快速增长,超过¾的参与者期望在来年扩展他们的使用场景,另外和前一年的报告相比,Node 的易学程度有了大幅提升。


而根据 ModuleCounts.com 的数据,Node 的包注册中心 NPM 每天会增加 507 个包,相比后一名要多出 4 倍。2018 年 Stack Overflow 调查也有类似的结果,JavaScript 是使用最广泛的语言,Node.js 是使用最广泛的框架。


更进一步,Serverless 技术的火爆也带来了 Node.js 势头的水涨船高。主流 Serverless 厂商纷纷把宝押在 Node.js 上,主要是看上了 JavaScript 工具的丰富生态,再加上 Node.js 的轻量化、容易分散与水平扩充、各种操作系统都容易运行的特性,将 Node.js 作为无服务器服务优先支持的框架,这也让 Node.js 更适合用于超大规模部署的应用。


Ryan Dahl 最初并没有意识到 Node.js 会产生如此大的影响,他将其归功于社区的持续改善,从而获得了越来越成熟的 Node.js 框架。这也从另一方面揭示了,对于一款成功的开源软件 / 框架而言,技术上的实现只是其中一步,如何形成完整的生态、活跃的社区,才是其获得长久发展的关键。


对于 Deno 而言,基本功能在 5 月 13 号以后应该就齐全了,但它要解决的问题还有很多。

这次,请别刷学不动了

我原本没想发明 Node.js,而是想用 Haskell 语言完成我的项目,但是失败了。我又不够聪明,没有能力改进 GHC(Haskell 语言的运行时),只好发明新的工具。


Ryan Dahl 在接受采访时曾表示,自己造 Node 轮子的原因在于自己不够聪明,没有能力改进已有工具,所以只好发明新的工具。这不禁让人回想起了他创立 Deno 之前的一句抱怨——“(现在的)Node.js 太难用了”,由此看来,他可能是真的认为发明新轮子比改进旧轮子省事儿。


2018 年 5 月,Deno 上线 GitHub 之初,就有许多国内开发者在 issue 区灌水,“别更新了,学不动了”。前端之巅认为,这种“中国式”的程序员幽默,并不适宜于用在一个正式项目的 issue 区,考虑到文化差异的问题,这种“幽默”不仅显得更加不合时宜,而且会进一步造成对中国开发者的误解。


对于绝大部分开源项目而言,issue 的首要目标是为项目维护者而不是项目使用者提供服务。issue 的意义在于追踪 bug、新增 feature、推动项目进度等有助于项目发展的事件,而不是类似 BBS 的无聊灌水。


技术的更新换代是正常发展规律,“别更新了,学不动了”最终也会被“真香”所取代。对于新陈代谢尤为迅猛的前端领域而言,前端开发者们更应该保持对技术的热爱,不要把自己局限在“切图仔”的狭小天地里。


最后送给大家三条建议:


  1. 不要纠结于开发工具——不管是库、编程语言还是平台。尽可能使用原生的构件。不要歪曲技术,也不要歪曲了问题本身。为要解决的问题选择合适的工具,否则你要为你所选择的工具重新安排你的工作。

  2. 远离“炒作驱动开发”,但你要去了解它们,做一些尝试。

  3. 走出舒适区,每天都要学习。把学到的东西分享出来。如果你以大师自居,就不是在学习。接触更多的编程语言、技术、文化,保持一颗好奇心。


2020-04-07 14:085528
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 392.5 次阅读, 收获喜欢 1983 次。

关注

评论

发布
暂无评论
发现更多内容

低代码实现探索(三十二)多版本开发/本地开发

零道云-混合式低代码平台

哈佛商业评论对话王文京:如何制定正确的数智化战略和路径?

用友BIP

用友 数智化

丰e足食将大量引入算法人才 加快无人零售算法研发和应用

江湖老铁

小熊派:用OpenHarmory3.0点亮LED

华为云开发者联盟

小熊派 OpenHarmony 驱动开发 小熊派Micro LED

元年云李彤:ToB产品应具备数据驱动和「宽能力」

ToB行业头条

详解近端策略优化

行者AI

深度强化学习

fastposter 2.5.0 全新发布 一款电商级海报生成器

物有本末

Java Python 海报 海报生成器

开发之痛:稳定的测试环境,怎么就那么难 | 研发效能提升36计

阿里云云效

云计算 阿里云 DevOps 云原生 测试

加速企业数据应用创新的核心能力——灵活性

用友BIP

数据中台 创新 用友

TDengine在蔚来能源系统的落地实践

TDengine

MySQL 数据库 tdengine 物联网 时序数据库

2022年中国数字孪生城市市场分析:孪生城市产业经济全域协作

易观分析

数字孪生

RadonDB MySQL on K8s 2.1.2 发布!

RadonDB

MySQL 数据库 高可用 RadonDB KubeSphere

什么是数字化转型?

BeeWorks

【web安全】你的open_basedir安全吗?

H

网络安全 WEB安全

全链路灰度这样做,新需求迭代上线也能放心干饭

阿里巴巴云原生

阿里云 微服务 云原生 灰度

3月2日,阿里云开源 PolarDB 企业级架构将迎来重磅发布

阿里云数据库开源

数据库 阿里云 开源 分布式 polarDB

netty系列之:NIO和netty详解

程序那些事

Java Netty 程序那些事 2月月更

docker 批量删除 none 镜像

AlwaysBeta

Docker 容器 镜像 docker image docker build

【Python】第二章(条件语句和循环语句)

謓泽

Python 2月月更

一句话回顾会

Bruce Talk

敏捷 Agile 回顾会 Coach/Facilitate

通过5个函数带你理解K8s DeltaFIFO

华为云开发者联盟

k8s Queue Client-go DeltaFIFO FIFO

【邀请函】3月4日平台赋能 数智创新 ———用友BIP PaaS云平台iuap数智化百城论坛·济南站

用友BIP

用友 用友iuap 企业数智化 平台赋能 数智创新

中国信息通信研究院云计算与大数据研究所一行莅临亚信科技考察交流

亚信AntDB数据库

千万级车联网 MQTT 消息平台架构设计|车联网平台搭建从入门到精通 02

EMQ映云科技

架构 车联网 物联网 mqtt 分布式消息流平台

安全专属的移动数字化平台WorkPlus加速国企数字化转型

BeeWorks

私有模块上线,用它来开发外包项目,真香!

ModStart开源

那一年,我们在巴塞罗那找到的「ONES 图腾」

万事ONES

ONES

数据治理:从一把手工程到数据文化!

用友BIP

数据治理 用友 用友iuap 数据文化

用实例带你深入理解Java内存模型

华为云开发者联盟

Java JVM JMM 线程安全 Java内存模型

中台和低代码,“零和”还是“竞合”?

BeeWorks

针对 Kubernetes v1.22,阿里云容器服务 ACK 提供了哪些升级和增强能力?

阿里巴巴云原生

阿里云 容器 云原生 产品升级 ACK

Deno将于5月13日发布1.0版本,Node.js会逐渐失宠吗?_大前端_小智_InfoQ精选文章