爲什麼 Deno 沒有衆望所歸?超越 Node-js 還要做些什麼?

  • 原文地址:Here’s Why Deno Didn’t Take Off: And what Deno needs to do to overtake Node.js.

  • 原文作者:Spencer, Founder of Skiwise and NotionIntegrations

  • 譯者:@hylerrix

  • 原文發佈時間 / 翻譯時間:20200928/20210429

  • 本文屬於《Deno 鑽研之術》系列,原文翻譯已獲得作者翻譯授權。

譯者序

正文開始

Deno 是一個旨在改進甚至替代 Node 的 JavaScript / TypeScript 運行時。它擁有衆多的功能和廣泛的關注度,截止目前在 Github 上已經有 68k 個 Star(譯者注:2021-04 月底已 75k star):

https://github.com/denoland/deno

在如此多強大功能的加持下,有個很重要的問題值得反思:

爲什麼 Deno 在 1.0 正式版本發佈之後沒有衆望所歸,得到廣泛使用?

本文將嘗試探討該問題...

所以,Deno 是什麼?

Deno 是一個安全的 JavaScript 和 TypeScript 運行時,作者是 Ryan Dahl(也是 Node.js 的原作者)。Deno 的誕生之初是爲了解決 2009 年首次設計 Node.js 時的一些疏忽。我認爲這種改造動機很有道理,因爲我相信每個程序員都希望有機會能重寫他們已有 10 年曆史的代碼。

基於此,Deno 在 Node.js 已經發展至今的情況下,引入了很多新功能:

憑藉這些功能以及大量開發者的積極推進,Deno 於 2020 年 5 月正式發佈了 1.0 版本。

然後...

蹦...

爲什麼 Deno 沒有衆望所歸?

Deno 看起來擁有成功的所有要素:大量的關注者、諸多的功能、經驗豐富的創始人和開發者等等,但並沒有真正實現所有人期望的增長。這是爲什麼?

我認爲最好從業務的角度來分析。我們大多數人可能都忘記了,構建開源軟件與爲用戶構建軟件確實沒有什麼不同。供需關係的標準經濟原則仍然發揮着重要的作用。

當創建一個新的開源項目時,他們通常會與已經存在的東西 “競爭”。考慮到這一點的話,你不僅需要考慮你的新項目是否足夠出色,還需要考慮與現有項目相比有什麼真正的優勢。

定律來到 Deno 下時,需要關注到的就是已經存在的 Node.js。儘管 Node.js 可能有其缺陷,但它仍然有能力完成好自己的本分工作。如果 Deno 真的推出了 Node.js 無法複製的強大功能,就可能會改變遊戲規則——但事實並未發生。

** 從用戶的角度來看,Deno 僅真正具有一些 “次要功能”:一個更簡潔的代碼庫、一個更新的最佳實踐方案、一個更好的安全性支持,但是這些東西實際上對用戶來說僅僅是“功能特性” 而非一個成熟的產品。** 你可以開發一個像 Gmail 一樣的電子郵件客戶端,擁有更好的安全性和 50% 的速度改進,即使收藏你的客戶端到一個新書籤只需要很少的時間,但也不會有太多用戶願意切換過來的。

因此,這是 Deno 需要招架的第一招:Deno 具有許多不錯的功能,但是沒有什麼能激發用戶從 Node.js 切換過來的傑出之處。

Deno 需要招架的第二大地方在於其不支持 NPM 軟件包。如果 Deno 能夠支持 NPM 包,那麼也能改變遊戲規則。Deno 支持 NPM 包的話,將會讓其更像一個針對已有的郵件客戶端的更好的容器,而不是一個 “獨立的郵件客戶端”。

支持 NPM 軟件包將大大減少進入門檻。這會成爲用戶將其項目和庫遷移到 Deno 時的一個很好的墊腳石。

可以將 Deno 對 NPM 支持的重要意義同比於 TypeScript 的 “嚴格模式”。對於擁有大量 JavaScript 代碼庫的用戶,直接進行純 TypeScript 改造,將使你在解決各種錯誤消息時的工作效率降低數週。但由於 TypeScript 具有禁用嚴格模式的支持,可以讓其成爲用戶緩慢遷移到純 TypeScript 的墊腳石。這爲用戶提供了更低的進入門檻,並且反過來又幫助 TypeScript 近年來奪走很多 JavaScript 的市場份額。

那麼,代價是什麼呢?

我認爲這是一個能印證業務方法的有趣案例。重點在於,如果你需要像市場發佈一個新產品,你必須確保它的優勢很大,以至於能克服人們從現狀轉變到新方式的阻力。

對於 Deno 來說,最初有很多獨特的魅力,但回首總結 Deno 時,會發現 Deno 實際上是以失去 Node.js 下的整個 NPM 生態系統爲代價的情況下的一些小 “修復”。

Deno 將會去往何方?

Deno 團隊有一個決定需要做。他們可以努力添加對 Node.js 的向後兼容性,或者增加更多能誘使用戶遷移過來的更多吸引力。我個人認爲對 Node.js 的向後兼容是接下來要走的路,如果增加了更多的兼容性,也會極大地改變項目的未來。

無論如何,以最好的祝福送給 Deno 團隊,我也希望更好的技術能最終更有市場。希望你喜歡這篇文章,感謝閱讀。

© https://github.com/hylerrix/deno-tutorial 2020~2021

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ZyJlgR8G5lnGjBVeCOk5PQ