建立新的 JavaScript 執行階段的主要目標之一是提供更安全的環境。 為了提高安全性,V8 引擎是用 Rust 編寫的,這避免了許多由低階記憶體操作引起的漏洞,例如釋放後存取、空指標取消引用和緩衝區溢位。 平台用於以非阻塞方式處理請求
主要的
- 面向安全的預設配置。 預設情況下禁用文件訪問、網路和環境變數訪問,必須明確啟用;
- 除了 JavaScript 之外,還內建 TypeScript 語言的支援;
- 運行時以單一獨立可執行檔(“deno”)的形式出現。 要使用 Deno 運行應用程式就足夠了
上載 為其平台一可執行文件,大小約10 MB,無外部依賴,不需要在系統上進行任何特殊安裝; - 啟動程式以及載入模組時,可以使用 URL 尋址。 例如,要執行welcome.js程序,您可以使用指令「deno https://deno.land/std/examples/welcome.js」。 來自外部資源的程式碼被下載並快取在本機系統上,但永遠不會自動更新(更新需要使用“--reload”標誌明確運行應用程式);
- 在應用程式中透過HTTP高效處理網路請求;該平台專為創建高效能網路應用程式而設計;
- 能夠建立可以在 Deno 和常規 Web 瀏覽器中執行的通用 Web 應用程式;
- 除了執行時間之外,Deno 平台還充當套件管理器,可讓您透過程式碼內的 URL 存取模組。 例如,要載入模組,您可以在程式碼中指定“import * as log from “https://deno.land/std/log/mod.ts”。 透過 URL 從外部伺服器下載的檔案會被快取。 綁定到模組版本是透過在 URL 中指定版本號來確定的,例如,「https://unpkg.com/[電子郵件保護]/dist/liltest.js";
- 該結構包括一個整合的依賴性檢查系統(“deno info”命令)和一個程式碼格式化實用程式(deno fmt)。
- 對於應用程式開發人員
建議 一組經過額外審核和相容性測試的標準模組; - 所有應用程式腳本都可以合併到一個 JavaScript 檔案。
與 Node.js 的差別:
- Deno 不使用 npm 套件管理器
並且不依賴儲存庫,模組透過 URL 或檔案路徑進行尋址,模組本身可以放置在任何網站上; - Deno 不使用「package.json」來定義模組;
- API 差異,Deno 中的所有非同步操作都會傳回一個 Promise;
- Deno 要求明確定義檔案、網路和環境變數的所有必要權限;
- 處理程序未提供的所有錯誤都會導致應用程式終止;
- Deno 使用 ECMAScript 模組系統,不支援 require()。
來源: opennet.ru