天天看點

JavaScript 開發人員更喜歡 Deno 的五大原因

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

NodeJS 的創造人 Ryan Dahl 剛釋出了一個新的運作時 Deno,旨在解決 Node 存在的許多缺陷。像大家一樣,我一開始也以為這隻是又一個 JS 架構。但是深入了解過 Deno 的各項優點之後,我意識到了 Deno 正是 2020 年的今天,後端 Javascript 開發人員所需要的東西。在這篇文章中,我們就來看一下 JavaScript 開發人員為什麼在使用 Deno 時能比 Node 獲得更流暢、更現代化的體驗。

現代化的 Javascript——ES 子產品

JavaScript 開發人員更喜歡 Deno 的五大原因

如果你也像我一樣是一位 React 開發人員,你會注意到使用 NodeJS 導入軟體包的文法是不一樣的。這是因為 Node 面世于 2009 年,這些年來 Javascript 得到了大量更新和改進。

在 React(和 Deno)中,我們使用 import package from 'package’文法,而在 Node 中我們使用 const package = require(“package”) 文法。

Deno 的 ES 子產品 import 有兩個優勢:

1.通過 import,你可以有選擇地從包中加載所需的部件,進而節約了記憶體空間。

2.加載與 require 是同步的,而 import 則會異步加載子產品,進而提高了性能。

如上圖所示,我們正在從一個 URL 導入moment包,這也是 Deno 的另一個優勢。

去中心化包

使用 Deno 時,你不用再依賴 NPM 了。是的,不再需要 package.json。每個包都是從一個 URL 加載的。

在 NodeJS 中,要使用一個軟體包,你必須先從 NPM 安裝它:

npm i moment           

等它安裝完畢後,再将其包含在你的應用中:

const moment = require("moment")           

另外,不管是誰要在本地運作你的 NodeJS 存儲庫,都必須從 NPM 安裝所有依賴項。

在 Deno 中,這個包是從一個 URL 導入的。是以要使用 moment 時,隻需導入

https://deno.land/x/moment/moment.ts

即可。

JavaScript 開發人員更喜歡 Deno 的五大原因

Deno 中軟體包這塊的另一大優勢是,每個包安裝完成後都緩存在硬碟驅動器上。也就是說軟體包的安裝過程隻運作一次。要在任何地方再次導入依賴項時,并不需要重新下載下傳。

TypeScript 原生支援,無需配置

JavaScript 開發人員更喜歡 Deno 的五大原因

在 NodeJS 中使用 TypeScript 需要很多準備工作。你必須安裝 typescript,更新 package.json、tsconfig.json,并確定你的子產品支援 @types。

在 Deno 中,你要做的就是将檔案另存為.ts 而不是.js,TypeScript 編譯器已經準備就緒了。

頂級 await——在異步函數之外使用 await

JavaScript 開發人員更喜歡 Deno 的五大原因

在 Node 中,我們隻能在一個異步函數中通路 await 關鍵字。

而在 Deno 中,你可以随時随地 await 任何事情,而無需将其包裝在一個異步函數中。

幾乎所有的 Javascript 應用都包含許多異步函數。這一改進讓代碼變得更加簡潔明了。

通路 Browser API(Window,Fetch)

要使用 Javascript 發出 HTTP 請求,我們可以使用 Fetch API。

在 NodeJS 中我們沒有通路 Browser API 的權限,是以我們不能直接調用一個 fetch 函數。我們必須先安裝這個包:

npm i node-fetch           

然後導入它:

const fetch = require("node-fetch")           

這樣我們才能調用一個 fetch。

Deno 原生支援通路 window 對象,于是你可以調用 fetch(“

https://something.com

”) 以及 Browser API 中的其他任意内容,而無需安裝任何庫。

有了這個頂級 await 的優勢,Deno 的代碼就會比 Node 簡單很多:

JavaScript 開發人員更喜歡 Deno 的五大原因

還不止這些

Deno 還有其他許多優點,例如預設情況下更安全、可以執行 Wasm 二進制檔案、擁有許多内置庫,等等。

本文提到的這些要點都是互相聯系的,它們共同打造出了一個更現代化的 JavaScript 後端運作時。作為一名 React 開發人員,我站 Deno 這邊。現在我可以使用 import 文法,在需要的任何位置編寫 await,無需任何配置直接使用 TypeScript,甚至可以無需安裝包就調用 fetch。一切都非常簡單。

Deno 最終會取代 Node 嗎?也許會吧。這可能需要幾年時間。NodeJS 生态系統非常龐大,Deno 可能需要一些時間才能迎頭趕上。很多 Javascript 開發人員最近都考慮在新項目中使用 Deno,是以如果你近期想要開始做一個新項目,Deno 絕對值得你研究一下。了解更多資訊,請通路

https://deno.land/

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-06-11

本文作者:Dan Halperin

本文來自:“

InfoQ

”,了解相關資訊可以關注“

繼續閱讀