好程式設計師前端分享什麼是Deno,它與Node.js的區別

好程式設計師IT發表於2019-07-29

  好程式設計師前端分享 什麼是 Deno,它與Node.js 的區別 Node.js的建立者Ryan Dahl花了一年半的時間研究 deno ,這是一個新的 JavaScript執行時,可以解決Node的所有固有問題。

   不要誤解我的意思, Node js它 本身就是一個很棒的伺服器端 JavaScript執行時,主要是因為它擁有 大的生態系統和 JavaScript。然而, Node.js的建立者Ryan Dahl 承認他應該考慮更多的 -安全性,模組和依賴性,僅舉幾例。

   在他的辯護中,並不是說他可以想象平臺在如此短的時間內會增長多少。此外,早在 2009年,JavaScript仍然是這種奇怪的小語言,每個人都取笑,而且它的許多功能還沒有。

   那麼什麼是 Deno,主要特性有什麼呢?

1.  Deno 是一個基於 V8構建的安全的TypeScript的Google執行時引擎。

   它建立了:

Rust(Deno的核心是用Rust編寫的,node用C++編寫的)

Tokio(以Rust編寫的事件迴圈)

TypeScript(Deno支援開箱即用的JavaScript和typeScript)

V8(谷歌在Chrome和node中使用的JavaScript進行時)

   2.   它支援 T y pe2.8開箱即用,沒有package. j son,沒有npm   不追求相容 Node,透過 URL 方式引入依賴而非透過本地模組,並且在第一次執行的時候進行載入和快取,並僅在程式碼使用執行,依賴才會更新。

可以控制檔案系統和網路訪問許可權以執行沙盒程式碼,預設訪問只讀檔案系統可訪問,無網路許可權。 V8 和 Golang 之間的訪問只能透過 protobuf 中定義的序列化訊息完成;

最終建立單一可執行檔案;

支援 top-level await

最終的 目標是相容瀏覽器;

可以作為庫引入,用於建立自己的 JavaScript runtime

   這幾個特性,有 很多 個都是針對目前 Node Js   的痛點而來的,包括無 package.json 、依賴的引入和更新方式,針對的就是被廣泛吐槽的過大的。

   同時,不 追求相容 node ,可以視為 ry 想徹底拋棄 node 包袱,打造一個更好的 JS 執行時。

它的安全性也是很放心的,它最重要的功能之一就是安全性很高,與 NodeJs 相反, Deno 預設執行沙箱中程式碼,這就意味執行是無權訪問。

我們來看看它的工作原理:

   (async () => {

    const encoder = new TextEncoder();

    const data = encoder.encode('Hello world');

    await Deno.writeFile('HelloWorld.txt', data);

    await Deno.writeFile(' HelloWorld2.txt', data);

   })();

   該指令碼建立了兩個文字檔案,其中包含一條訊息。程式碼正在沙箱中執行,因此它無法訪問檔案系統。 HelloWorld.txt HelloWorld2.txt Hello world

   另請注意,我們正在使用 Deno 名稱空間而不是 fs 模組,就像在 Node 中一樣。 Deno 名稱空間提供了許多基本的輔助函式。透過使用名稱空間,我們正在失去瀏覽器相容性

   當然我們用到 Deno 的時候,會想到瀏覽器的相容性, Deno 旨在瀏覽器相容。從技術上講,在使用 ES 模組時,我們不必使用任何構建工具(如 webpack )來使我們的應用程式啊可以在瀏覽器中使用。

   但是像 Babel 這樣的工具會將程式碼轉換成 ES5 版本的 JavaScript ,因此 即使在不支援該語言所用最新功能的舊版瀏覽器中,程式碼也可以執行。但這也是最終檔案中包含大量不必要的程式碼並使輸出檔案膨脹為代價的。

   由我們決定我們的主要目標是什麼,並相應地做出選擇。

TypeScript 支援開箱即用

   Deno 使得無需任何配置檔案即可輕鬆使用 TypeScript 。仍然可以用純 JavaScript 編寫程式並使用 Deno 執行它們而不會有任何麻煩。

   Deno TypeScript JavaScript 的新執行時,是一個有趣的專案,現在已經穩定增長了很長一段時間。但是在它被認為是生產就緒之前還有很長的路要走。

藉助它的分散式方法,它需要從集中式軟體包登錄檔(即 npm )中釋放 JavaScript 生態系統。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2652079/,如需轉載,請註明出處,否則將追究法律責任。

相關文章