close

世界各地的貢獻者們正在將 freeCodeCamp 的技術教育資源翻譯成不同語言,幫助人們免費學習編程,歡迎你加入這一教育公益活動:freeCodeCamp 世界翻譯月丨每個人都可以用母語免費學編程

Deno 是一個新的 JavaScript 運行時。它是由 Node.js 的創建者 Ryan Dahl 創建的。

Dahl 對 Node 的一些做法感到遺憾,他想建立一個能夠解決這些問題的運行時。Deno 和 Node 一樣,建立在 V8 JavaScript 引擎上,但使用 Rust 而不是 C++ 構建。

Deno 的主要目標之一是使服務器端的 JavaScript 更接近瀏覽器的 JavaScript。

如果你寫過 Node 和瀏覽器的 JavaScript 代碼,那麼你肯定遇到過各自空間中使用的 API 的差異。Deno 旨在使服務器上的 API 與你在瀏覽器中使用的 API 相同。我們將在後面深入研究這方面的具體例子。

Deno 的主要功能Deno 使用 TypeScript

Deno 最吸引人的特點之一是,它把 TypeScript 當作開箱即用的第一類語言。這意味着你可以運行或使用 TypeScript 而無需安裝任何其他外部或第三方軟件包。

TypeScript 在 JavaScript 世界裡越來越受歡迎,很多工具和公司都在推動使用它。看到像 TypeScript 這樣的新的進步技術得到更多的關注是非常酷的,在 Deno 這樣的大項目中獲得一流的地位是一個巨大的進步。

Deno 默認是安全的

Deno 默認是安全的。這意味着,除非腳本被特別允許,否則它不能訪問系統文件、環境(如環境變量)或網絡。

為了允許訪問這些功能,你需要在 CLI 命令中傳遞相應的標誌。以下是一些你最常使用的功能。

網絡訪問:--allow-net, 你還可以指定代碼允許訪問哪些 URL,比如說:--allow-net=https://api.deepgram.com
文件訪問:--allow-read
環境變量訪問:--allow-env
Deno 的瀏覽器兼容性

就像我上面提到的,Deno 努力使其擁有與瀏覽器相同的 API。在我看來,其中最大的是對 fetc‍h API的支持。

如今,在我寫的大多數 JavaScript 中,我都使用了 fetch API。能夠在我的服務器端代碼中使用相同的語法,使我的工作效率提高了很多,而且使上下文切換的負荷大大降低。

包管理

Deno 沒有一個軟件包管理工具。Node 使用 npm 來加載第三方軟件包到你的項目中,但 Deno 通過 URL 來加載模塊。

老實說,我一開始對此感到很困惑。一直以來使用 Node 和 NPM 的我對沒有某種包管理器或 package.json 文件感到奇怪。

Deno 允許軟件包開發者將他們的代碼託管在他們想要的地方,而不是這種集中式的註冊表。如果代碼託管在 GitHub 上,你可以在他們的託管服務上註冊你的模塊,在那裡它被緩存。這使得開發人員更容易找到和使用該模塊。

ES 模塊

Deno 也使用 ES 模塊,不支持 require() 語法。同樣,我現在寫的大部分 JavaScript 都使用了這樣的現代功能,所以不用擔心我在某個編碼環境中是否使用了正確的語法,這是很好的。

標準庫

Deno 帶有一個標準庫,其中包含 Deno 團隊審核過的功能。這使得開始使用 Deno 變得非常容易。

沒有必要去尋找第三方軟件包來做服務器端代碼中需要的相當基本的事情。作為一個開發者,知道我使用的代碼是由 Deno 團隊正式支持和批准的,這讓我很欣慰。

測試模塊

包含在標準庫中的一個模塊是測試模塊。這個模塊使得在 Deno 中編寫測試更加容易,並且會使它們在不同的項目中更加一致。

這可能不是每個人都喜歡的,特別是如果有些人對測試庫有強烈的意見。但我真的很喜歡它。隨着 Deno 的不斷發展,各項目間的一致性將使維護代碼和切換項目更加容易。

Deno 與 Node 的對比

圍繞 Deno 的最大問題是它與 Node 的比較。

與 Node 相比,Deno 顯然具有一些優勢。默認情況下是安全的,這無疑是一個有吸引力的功能,而開發者會把對 TypeScript 的開箱即用的支持視為一個巨大的勝利。

另一方面,Node 有一個非常豐富的社區,有一個成熟的生態系統和第三方軟件包,使它更容易啟動和運行。隨着 Deno 宣布將支持大多數 NPM包,我可以看到人們很快就會轉向 Deno。

Deno 最近還發布了 Deno Deploy 公測版。這將允許用戶在邊緣快速部署 JavaScript 代碼。隨着時間的推移,這項服務可能會給 Deno 公司帶來優勢並擴大用戶群。

總結

在過去的幾個月中,我使用 Deno 的經歷非常有趣,我很喜歡使用它,也很高興看到它的未來。

在接下來的幾周里,我將寫幾篇文章,深入探討 Deno 的世界。

更多 Deno 主題的文章

如何在 Deno 下使用 AlpehJS 庫構建 React 應用

為什麼我認為 Deno 是一個邁向錯誤方向的 JavaScript 運行時?

原文鏈接:https://www.freecodecamp.org/news/intro-to-deno/

作者:Brian Barrow

譯者:luojiyin

在線貢獻者交流會預告
在線貢獻者交流會將於北京時間 2022 年 9 月 25 日周日上午 10:00 - 11:00 開展(每兩周一次,都在這個時間段開展)。
歡迎大家添加小助手微信 fcczhongguo,加入會議室。
開源公益社區 freeCodeCamp.org 自 2014 年成立以來,以「幫助人們免費學習編程」為使命,創建了大量免費的編程教程,包括交互式課程、視頻課程、文章等。我們正在幫助全球數百萬人學習編程,希望讓世界上每個人都有機會獲得免費的優質的編程教育資源,成為開發者或者運用編程去解決問題。
✨ ✨ ✨
年度總結丨2021 年世界各地的開發者在 freeCodeCamp 學習 21 億分鐘(4000 年)
freeCodeCamp 教育公益下一個目標:免費提供大學計算機科學學士學位
參與 freeCodeCamp 開源社區翻譯協作,幫助全世界人們用母語免費學習編程

點擊「閱讀原文」
在freeCodeCamp 專欄查看更多
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()