Javascript開發人員偏心Deno而不是Node的5大緣由

NodeJS的做者Ryan Dahl發佈了一個新的運行時,旨在解決Node的許多缺點。你最初的反應多是「哦,太棒了,另外一個Javascript框架?正是我所須要的...」。別擔憂,我也有一樣的反應。在瞭解了優點以後,我也看到了爲何Deno正是2020年後端Javascript開發人員所須要的。讓咱們來看看javascript開發人員使用Deno vs. Node得到更流暢,更現代的體驗的5大緣由。javascript

1.現代Javascript——ES Modules

若是你是像我這樣的React開發人員,你會注意到使用NodeJS導入軟件包的語法是不一樣的。這是由於Node於2009年問世,此後對Javascript進行了大量更新和改進。前端

在React(和Deno)中,咱們使用 import package from 'package' 語法導入包,而在Node中,咱們使用const package = require("package") 語法。java

ES Modules導入的優點在於兩個緣由:node

  1. 使用 import,能夠有選擇地只從包中加載須要的部分,這節省了內存。
  2. 加載與 require 同步,而 import 則異步加載模塊,從而提升了性能。

若是你在上圖中注意到,咱們正在從URL導入moment包,這將帶給咱們Deno的下一個優點。git

2.去中心化的包

使用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中軟件包的另外一個巨大優點是,安裝後每一個軟件包都緩存在硬盤驅動器上。這意味着軟件包的安裝僅發生一次,若是要在任何地方再次導入依賴項,則沒必要下載它。

3.TypeScript是原生的,不須要配置

讓TypeScript與NodeJS一塊兒工做是一個多步驟的過程。你必須安裝TypeScript,更新package.json,tsconfig.json,並確保你的模塊支持@types。

在Deno中,你所要作的就是將文件另存爲 .ts 而不是 .jsTypeScript編譯器已經安裝好了

4.頂層await——在異步函數以外使用await功能

在Node中,只能在異步函數中訪問 await 關鍵字。

使用Deno,你能夠隨時隨地 await 任何事情,而無需將其包裝在異步函數中。

幾乎全部Javascript應用程序都包含許多異步函數,此次升級使代碼更加乾淨和簡單。

5.訪問瀏覽器API(Window,Fetch)

要使用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代碼簡單得多:

2020年之後編寫Javascript代碼的方式

並無就此結束

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,第一時間閱讀最新文章,會優先兩天發表新文章。關注後私信回覆:大禮包,送某網精品視頻課程網盤資料,準能爲你節省很多錢!

相關文章
相關標籤/搜索