Deno JavaScript 平台與 NPM 模組相容

Deno 1.28 已發布,這是一個用於獨立執行 JavaScript 和 TypeScript 應用程式的平台,可用於建立伺服器端處理程序。該平台由 Node.js 的創建者 Ryan Dahl 開發。與 Node.js 一樣,Deno 也使用 V8 JavaScript 引擎,該引擎也用於基於 Chromium 的瀏覽器。然而,Deno 並非 Node.js 的一個分支,而是一個從零開始建立的全新專案。此專案代碼以 MIT 許可證發布。建置版本已準備就緒。 Linux, Windows и macOS.

Deno 專案的建立是為了提供使用者更安全的環境,並修復 Node.js 架構中的概念錯誤。為了提高安全性,V8 引擎的包裝器是用 Rust 編寫的,這避免了由於低階記憶體處理而產生的許多漏洞。為了以非阻塞模式處理請求,使用了 Tokio 平台,也是用 Rust 編寫的。 Tokio 使您能夠創建基於事件驅動架構的高效能應用程序,支援多執行緒並以非同步模式處理網路請求。

新版本的關鍵變化是與 NPM 儲存庫中託管的軟體包的兼容性更加穩定,這使得 Deno 可以使用為 Node.js 平台創建的超過 1.3 萬個模組。例如,基於 Deno 的應用程式現在可以使用模組來組織對資料的持久訪問,例如 Prisma、Mongoose 和 MySQL,以及前端框架,例如 React 和 Vue。有些 NPM 模組仍然與 Deno 不相容,例如由於它們依賴 Node.js 特定的環境元素(如 package.json 檔案)。目前還無法將「deno compile」指令與 NPM 模組一起使用。我們計劃在未來的版本中解決此類不相容性和限制問題。

對 Deno 先前使用的 ECMAScript 模組系統和 Web API 模型的支援也保留在同一級別,並使用 Deno 熟悉的基於 URL 的載入方案來導入 NPM 模組。要存取 NPM 模組,有一個特殊的 URL 前綴“npm:”,其使用方式與常規 Deno 模組相同。例如,要匯入 NPM 模組,您可以指定“import { chalk } from "npm:chalk@5";”,要從命令列執行 NPM 腳本,您可以指定“deno run --allow-env --allow-read npm:create-vite-extra”。

在 Deno 中使用 NPM 套件比在 Node.js 中簡單得多,因為不需要預先安裝模組(模組在應用程式首次啟動時安裝),沒有 package.json 文件,也沒有預設的 node_modules 目錄(模組快取在一個公共目錄中,但可以使用“--node-modules-dir”選項恢復到舊行為)。

基於 NPM 的應用程式保留使用 Deno 的存取控制、隔離和安全敏感的高級功能的能力。為了打擊透過可疑依賴項發起的攻擊,Deno 預設會阻止所有從依賴項存取系統的嘗試,並顯示有關偵測到的問題的警告。例如,當一個模組嘗試取得 /usr/bin/ 的寫入存取權時,它會提示您確認此操作:deno run npm:install-malware ⚠️ ┌ Deno 要求對 /usr/bin/ 的寫入存取權。 ═ 由「install-malware」請求 ═ 使用--allow-write 再次運行以繞過此提示。 └ 允許? [y/n](y = 是,允許;n = 否,拒絕)>

在與 NPM 無關的改進中,新版本提到了對 V8 引擎 10.9 版本的更新、帶鎖檔案的自動檢測、Deno.bench()、Deno.gid()、Deno.networkInterfaces()、Deno.systemMemoryInfo() 和 Deno.uid() API 的穩定,以及添加了用於運行命令的新不穩定的 API.D.和 Deno.spawnChild 的通用替代品)。

Deno 的主要特點:

  • 面向安全的預設配置。 預設情況下停用文件訪問、網路和對環境變數的訪問,必須明確啟用。 應用程式預設運行在隔離的沙箱環境中,在未授予明確權限的情況下無法存取系統功能;
  • 除了 JavaScript 之外,也內建了 TypeScript 的支援。 對於類型檢查和 JavaScript 生成,使用標準的 TypeScript 編譯器,這導致與 V8 中的 JavaScript 解析相比效能有所下降;
  • 運行時以單一獨立可執行檔(“deno”)的形式出現。 要使用 Deno 運行應用程序,您只需為您的平台下載一個可執行文件,大小約為 30 MB,該文件沒有外部依賴項,不需要在系統上進行任何特殊安裝。 而且,deno 不是一個單體應用程序,而是 Rust crate 套件(deno_core、rusty_v8)的集合,可以單獨使用;
  • 啟動程式以及載入模組時,可以使用 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/liltest@0.0.5/dist/liltest.js」;
  • 該結構包括一個整合的依賴性檢查系統(“deno info”命令)和一個程式碼格式化實用程式(deno fmt);
  • 所有應用程式腳本都可以合併到一個 JavaScript 檔案。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster