NodeJS的做者Ryan Dahl發佈了一個新的運行時,旨在解決Node的許多缺點。你最初的反應多是「哦,太棒了,另外一個Javascript框架?正是我所須要的...」。別擔憂,我也有一樣的反應。在瞭解了優點以後,我也看到了爲何Deno正是2020年後端Javascript開發人員所須要的。讓咱們來看看javascript開發人員使用Deno vs. Node得到更流暢,更現代的體驗的5大緣由。javascript
若是你是像我這樣的React開發人員,你會注意到使用NodeJS導入軟件包的語法是不一樣的。這是由於Node於2009年問世,此後對Javascript進行了大量更新和改進。前端
在React(和Deno)中,咱們使用 import package from 'package'
語法導入包,而在Node中,咱們使用const package = require("package")
語法。java
ES Modules導入的優點在於兩個緣由:node
import
,能夠有選擇地只從包中加載須要的部分,這節省了內存。require
同步,而 import
則異步加載模塊,從而提升了性能。若是你在上圖中注意到,咱們正在從URL導入moment包,這將帶給咱們Deno的下一個優點。git
使用Deno,再也不依賴NPM。是的,再也不須要 package.json
,每一個包都是從URL加載的。npm
在NodeJS中,要使用軟件包,必須首先從NPM安裝它:json
npm i moment
複製代碼
等待它安裝,而後將其包含在你的應用程序中:後端
const moment = require("moment")
複製代碼
另外,任什麼時候候有人要在本地運行你的NodeJS倉庫時,都必須從NPM安裝全部依賴項。瀏覽器
在Deno中,該包是從URL導入的,所以,若是要使用moment,只需導入https://deno.land/x/moment/moment.ts。緩存
關於Deno中軟件包的另外一個巨大優點是,安裝後每一個軟件包都緩存在硬盤驅動器上。這意味着軟件包的安裝僅發生一次,若是要在任何地方再次導入依賴項,則沒必要下載它。
讓TypeScript與NodeJS一塊兒工做是一個多步驟的過程。你必須安裝TypeScript,更新package.json,tsconfig.json,並確保你的模塊支持@types。
在Deno中,你所要作的就是將文件另存爲 .ts
而不是 .js
,TypeScript編譯器已經安裝好了。
在Node中,只能在異步函數中訪問 await
關鍵字。
使用Deno,你能夠隨時隨地 await
任何事情,而無需將其包裝在異步函數中。
幾乎全部Javascript應用程序都包含許多異步函數,此次升級使代碼更加乾淨和簡單。
要使用javascript發出HTTP請求,咱們可使用Fetch API。在NodeJS中,咱們沒有訪問Browser API的權限,所以咱們不能直接調用獲取函數。咱們必須首先安裝該軟件包:
npm i node-fetch
複製代碼
而後導入包:
const fetch = require("node-fetch")
複製代碼
只有這樣,咱們才能進行調用。
Deno原生有權訪問 window
對象,這意味着你能夠繼續調用fetch(「 something.com」)以及Browser API中的任何其餘對象,而無需安裝任何庫。
結合頂層的await優點,你如今能夠看到Deno代碼比Node代碼簡單得多:
Deno還有許多其餘優勢,例如默認狀況下更安全,能夠執行Wasm二進制文件,具備許多內置庫,而且列表還在繼續。
本文提到的全部要點都是相互聯繫的,共同造成一個更現代的2020年後端javascript運行時。做爲一個React開發人員,我與Deno共鳴。如今,我可使用導入語法,在任何須要的地方編寫await,使用TypeScript而不進行任何配置,甚至能夠調用fetch而無需安裝軟件包。很簡單。
Deno最終會取代Node嗎?也許。這可能須要幾年時間。 NodeJS生態系統很是龐大,Deno可能須要一些時間才能遇上。可是Javascript開發人員最近一直喜歡Deno的新項目,所以,若是你打算儘快開始一個新項目,那麼絕對值得研究。有關如何開始的更多信息,請訪問deno.land。
來源:levelup.gitconnected.com,做者:Dan Halperin,翻譯:公衆號《前端全棧開發者》
本文首發於公衆號 《前端全棧開發者》 ID:by-zhangbing-dev,第一時間閱讀最新文章,會優先兩天發表新文章。關注後私信回覆:大禮包,送某網精品視頻課程網盤資料,準能爲你節省很多錢!