Deno需要做什么才能取代Node.js?
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。
Deno是一個Javascript/TypeScript的運行時,旨在取代Node.js的地位。它擁有廣泛功能,討論度非常高,在Github上有將近68000個星星:

既然這么受歡迎,那么有人要問了:為什么Deno正式版本1.0發(fā)行時沒能成功呢?本文就將深入探討這個問題。
什么是Deno
Deno是由Ryan Dahl(也是Node.js的原創(chuàng)者)創(chuàng)建的安全的JavaScript和TypeScript運行時,它的創(chuàng)建是為了彌補2009年首次設(shè)計Node.js時的疏忽。這種出發(fā)點很有意義,我敢肯定每個程序員都希望有機會重寫他們10年前的代碼。
因此,Deno在Node.js基礎(chǔ)上新增了很多特征,以下是其中一些:
- Deno默認設(shè)定就是安全的。必須通過選擇才能訪問文件系統(tǒng)、網(wǎng)絡(luò)或環(huán)境。
- Deno為TypeScript的延伸。
- 外部文件由URL明確引用,沒有package.json。
- 導(dǎo)入語句包括擴展名為.ts,.tsx,.js,.json的文件。
- 內(nèi)置的依賴項檢查器和文件格式化工具。
憑借這些功能以及大量的開發(fā)者炒作,Deno于2020年5月正式發(fā)布了1.0版。接著……它撲街了。
為什么Deno沒有成功?
圖源:unsplash
Deno似乎擁有致勝的所有要素。它追隨者眾多,功能多樣扎實,創(chuàng)作者經(jīng)驗老道等等,但結(jié)果卻未能達到人們的期望。這是為什么?
我認為最好從商業(yè)角度揭秘。很多人都忽略了一點:構(gòu)建開源軟件與為用戶構(gòu)建軟件實在沒有什么不同。基本的經(jīng)濟原則——供求關(guān)系,仍然發(fā)揮著重要作用。當有人創(chuàng)建一個新的開源項目時,他們勢必要與已建立的平臺競爭。鑒于此,不僅要考慮新項目的優(yōu)越性,還必須與現(xiàn)有項目作比較。
對Deno來說,現(xiàn)有的是Node.js,盡管Node.js可能有所不足,但它仍能出色完成任務(wù)。如若Deno推出了Node.js無法復(fù)制的強大特征,就可能會改變游戲規(guī)則。但Deno沒有。
從用戶的角度來看,Deno具有的只是“次要特征”。它具有更簡潔的代碼庫,使用了最新最佳的經(jīng)驗,更加安全,但是這些東西對用戶來說僅是“特性”,并非產(chǎn)品自身。
你可以做一個像Gmail一樣的電子郵件客戶端,它應(yīng)更加安全并提速50%,可是用戶仍然不會轉(zhuǎn)而使用它,即使重新創(chuàng)建書簽用時不多,人們也覺得不值得。Deno第一擊未中:它具有許多不錯的特征,但是沒有什么能讓用戶放棄Node.js的杰出之處。
Deno的另一個主要失敗之處是它不支持NPM軟件包。如果Deno能夠支持NPM軟件包,就很可能能夠改變形勢。Deno支持NPM軟件包將使它們不再像“單獨的電子郵件客戶端”,更像是對當前客戶端的更好包裝。支持NPM軟件包將大大降低進入壁壘。這將為用戶把項目和庫遷移至Deno提供一個良好的鋪墊。
這類似于TypeScript的“嚴格模式”。對于具有JavaScript強大代碼庫的用戶,直接轉(zhuǎn)用TypeScript會降低你幾周內(nèi)梳理錯誤消息的效率。
由于TypeScript可以取消嚴格模式,于是它可以為用戶完全轉(zhuǎn)向使用TypeScript做鋪墊。這使它們的進入門檻大幅降低,又助力TypeScript爭得近年來JavaScript搶占的市場份額。
啟示是什么?
圖源:unsplash
筆者認為這是一個有趣的案例,例證了更多的商業(yè)方法。給我們帶來的啟示就是,如果你要發(fā)布新產(chǎn)品,請務(wù)必確保它具有強大的優(yōu)點,能夠克服人們拒絕轉(zhuǎn)變現(xiàn)狀的阻力。
Deno具有魅力,但歸根到底,只是多了一系列的小“修復(fù)”,代價卻是失去了Node.js培育的整個NPM生態(tài)系統(tǒng)(也曾助它們壯大)。
那么,Deno接下來何去何從?首先他們得做出決定。要么努力增加Node.js庫的向后兼容性,要么提供更多好處來誘使用戶轉(zhuǎn)換平臺。筆者認為更應(yīng)拓展向后兼容,此后將極大改善項目的未來。
無論如何,祝Deno團隊好運,愿好技術(shù)長存。