新聞中心
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

為了解決Node的許多缺點(diǎn),NodeJS的開發(fā)者 Ryan Dahl,發(fā)布了一個(gè)新的運(yùn)行時(shí)刻。
人們最初的反應(yīng)可能是:“太棒了,另一個(gè)Javascript框架?正是我需要的?!惫P者也有過同樣的反應(yīng)。在了解其優(yōu)點(diǎn)之后,筆者更清晰地明白了為什么說Deno正是年后端Javascript開發(fā)人員所需要的。
相較Node而言,一起看看JavaScript開發(fā)人員使用Deno體驗(yàn)更流暢和更現(xiàn)代的五大原因。
1.Modern Javascript —ES 模塊
如果你也是個(gè)React開發(fā)人員,那么應(yīng)該已經(jīng)注意到了,在使用NodeJS時(shí)導(dǎo)入包的語法是不同的。這是因?yàn)镹ode是在2009年開發(fā)的,從那時(shí)起,針對(duì)Javascript進(jìn)行了很多更新和改進(jìn)。
在React(和Deno)中,使用現(xiàn)代的import package from 'package'語句,而在Node中,使用const package = require("package")語句。
ES模塊導(dǎo)入的優(yōu)越性源于兩個(gè)方面:
- 通過import,可以有選擇地僅從包中加載所需的片段,這樣可以節(jié)省內(nèi)存。
- 加載與require同步,而import異步加載模塊,這提高了性能。
2. 頂級(jí)await —在異步函數(shù)之外使用 await
在Node中,await關(guān)鍵字只能在異步函數(shù)中訪問。但是在Deno中,不論在何地,面對(duì)什么對(duì)象,都可以使用await,而無需將其打包為異步函數(shù)。
幾乎所有的Javascript應(yīng)用程序都包含許多異步函數(shù)。這次升級(jí)使代碼更加干凈和簡(jiǎn)單。
3. 分散式包
圖源:unsplash
有了Deno,就不必依賴于NPM。我們不再需要package.json了,每個(gè)包都是從URL上加載的。
在NodeJS中,要使用包,就必須先從NPM安裝:
- npm i moment
等待安裝,然后將其包含在應(yīng)用程序中:
- const moment = require("moment")
此外,不論何時(shí),如果有人想在本地運(yùn)行NodeJS 庫(kù),就必須得從NPM安裝所有依賴項(xiàng)。在Deno中,包是從URL中導(dǎo)入的,所以如果想要使用moment,只需導(dǎo)入網(wǎng)址:
https://deno.land/x/moment/moment.ts.
在包的方面,Deno另一個(gè)巨大的優(yōu)勢(shì),在于每個(gè)包在安裝后都緩存在硬盤上,這意味著一個(gè)包的安裝只發(fā)生一次。如果要在任何位置再次導(dǎo)入依賴項(xiàng),則無需再次下載。
4. TypeScript在本機(jī)工作,無需配置。
讓TypeScript與NodeJS一起工作需要多個(gè)步驟。讀者必須安裝typescript,升級(jí)package.json和tsconfig.json,并確保模塊支持@types。
在Deno中,所有需要做的就是將文件后綴保存為.ts而不是.js,TypeScript編譯器已經(jīng)內(nèi)置。
5. 訪問瀏覽器API (Window, Fetch)
要在Javascript中發(fā)出HTTP請(qǐng)求,可以使用Fetch API。在NodeJS中,沒有訪問瀏覽器API的權(quán)限,因此不能本地調(diào)用fetch函數(shù)。必須首先安裝包:
- npm i node-fetch
然后導(dǎo)入包:
- const fetch =require("node-fetch")
只有這樣才能調(diào)用fetch函數(shù)。
而本地Deno就有權(quán)訪問對(duì)象,這意味著讀者可以無需安裝任何庫(kù),直接調(diào)用fetch("https://something.com"),以及瀏覽器API中的任何內(nèi)容。當(dāng)與頂層await優(yōu)勢(shì)結(jié)合,你可以看出,Deno代碼比Node代碼簡(jiǎn)潔了多少:
2020年編寫Javascript代碼的方式
不止于此,Deno還有很多其他的優(yōu)點(diǎn),比如在默認(rèn)情況下更安全,可以執(zhí)行Wasm二進(jìn)制文件,有許多內(nèi)置庫(kù),等等。
圖源:unsplash
文中所提到的要點(diǎn)都是互相關(guān)聯(lián)的,共同組成了一個(gè)更為現(xiàn)代的2020后端JavaScript運(yùn)行時(shí)刻。作為一個(gè)React開發(fā)人員,筆者更偏愛Deno。
現(xiàn)在,筆者可以使用import語句,不論何處都可以使用 await,無需任何配置就可以使用TypeScript,甚至無需安裝包就可以調(diào)用fetch。一切都很簡(jiǎn)單。
另一個(gè)問題是,Deno最終會(huì)取代Node嗎?或許吧,但可能需要幾年時(shí)間。NodeJS生態(tài)系統(tǒng)很龐大,Deno需要時(shí)間來趕上。但趨勢(shì)就是Deno正變得更受歡迎,如果你正要開始一個(gè)新項(xiàng)目,不妨試試它。
當(dāng)前文章:DenoVSNode:Javascript開發(fā)人員更喜歡前者的五大原因
文章轉(zhuǎn)載:http://fisionsoft.com.cn/article/copghjh.html


咨詢
建站咨詢
