天天看點

8.77萬星!您應該知道的最簡單、最安全的 JavaScript 運作時

作者:啟辰8
8.77萬星!您應該知道的最簡單、最安全的 JavaScript 運作時

Deno(/diːnoʊ/,讀作 )是一個 JavaScript、TypeScript 和 WebAssembly 運作時,具有安全預設值和出色的開發人員體驗。dee-no

它建立在 V8、Rust 和 Tokio 之上。

Stars: 87.7k
License:  MIT
Languages: Rust(62.2%), JavaScript(26.1%)
Link: https://github.com/denoland/deno           

特色亮點

提供網絡平台功能,采用網絡平台标準。 例如使用 ES 子產品、web worker 和支援 .fetch()

8.77萬星!您應該知道的最簡單、最安全的 JavaScript 運作時

預設安全。 除非明确啟用,否則不得通路檔案、網絡或環境。

開箱即用地支援 TypeScript。

發送單個可執行檔案 (.deno)

為您的編輯器提供内置開發工具,如代碼格式化 ()、linter ()、測試運作器 () 和語言伺服器。deno fmtdeno lintdeno 測試

有一組經過審查(稽核)的标準子產品,保證可以與 Deno 一起使用。

可以将腳本捆綁到單個 JavaScript 檔案或可執行檔案中。

支援使用現有的 npm 子產品

一流的 HTTP 伺服器速度

8.77萬星!您應該知道的最簡單、最安全的 JavaScript 運作時

哲學

Deno 旨在為現代程式員提供高效且安全的腳本環境。

Deno 将始終作為單個可執行檔案分發。 給定一個 Deno 程式的 URL,它隻需約 31 兆位元組的壓縮可執行檔案即可運作。 Deno 明确承擔了運作時和包管理器的角色。 它使用标準的浏覽器相容協定來加載子產品:URL。

除其他外,Deno 可以很好地替代以前可能使用 Bash 或 Python 編寫的實用程式腳本。

目标

僅作為單個可執行檔案 (.deno) 釋出

提供安全預設值:除非特别允許,否則腳本無法通路檔案、環境或網絡。

與浏覽器相容:完全用 JavaScript 編寫且不使用全局命名空間(或對其進行功能測試)的 Deno 程式子集也應該能夠在現代 Web 浏覽器中運作而無需更改。Deno

提供内置工具以改善開發人員體驗:例如 單元測試、代碼格式化和 linting。

讓 V8 概念遠離使用者空間。

有效地提供 HTTP。

其他關鍵行為

在第一次執行時擷取并緩存遠端代碼,并且在代碼運作帶有标志之前永遠不會更新它。 (是以,這仍然适用于飛機。)--重新加載

從遠端 URL 加載的子產品/檔案應該是不可變的和可緩存的。

入門

嘗試運作一個簡單的程式:

deno run https://deno.land/std/examples/welcome.ts           

或者更複雜的:

const listener = Deno.listen({ port: 8000 });
console.log("http://localhost:8000/");

for await (const conn of listener) {
  serve(conn);
}

async function serve(conn: Deno.Conn) {
  for await (const { respondWith } of Deno.serveHttp(conn)) {
    respondWith(new Response("Hello world"));
  }
}           

繼續閱讀