您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Deno與Node.js的區別是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
1. Deno是一個基于V8構建的安全的TypeScript的Google運行時引擎。
它建立了:
l Rust(Deno的核心是用Rust編寫的,node用C++編寫的)
l Tokio(以Rust編寫的事件循環)
l TypeScript(Deno支持開箱即用的JavaScript和typeScript)
l V8(谷歌在Chrome和node中使用的JavaScript進行時)
2. 它支持Type2.8開箱即用,沒有package.json,沒有npm 不追求兼容Node,通過URL方式引入依賴而非通過本地模塊,并且在第一次運行的時候進行加載和緩存,并僅在代碼使用運行,依賴才會更新。
n 可以控制文件系統和網絡訪問權限以運行沙盒代碼,默認訪問只讀文件系統可訪問,無網絡權限。V8 和 Golang 之間的訪問只能通過 protobuf 中定義的序列化消息完成;
n 最終創建單一可執行文件;
n 支持 top-level 的 await;
n 最終的目標是兼容瀏覽器;
n 可以作為庫引入,用于建立自己的 JavaScript runtime。
這幾個特性,有很多個都是針對目前 NodeJs 的痛點而來的,包括無 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生態系統。
以上就是Deno與Node.js的區別是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。