Deno 介紹

2020-06-24 17:03 更新

Deno 是一個(gè) JavaScript/TypeScript 的運(yùn)行時(shí),默認(rèn)使用安全環(huán)境執(zhí)行代碼,有著卓越的開(kāi)發(fā)體驗(yàn)。 Deno 建立在 V8、Rust 和 Tokio 的基礎(chǔ)上。

功能亮點(diǎn)

  • 默認(rèn)安全。外部代碼沒(méi)有文件系統(tǒng)、網(wǎng)絡(luò)、環(huán)境的訪問(wèn)權(quán)限,除非顯式開(kāi)啟。

  • 支持開(kāi)箱即用的 TypeScript 的環(huán)境。

  • 只分發(fā)一個(gè)獨(dú)立的可執(zhí)行文件 (deno)。
  • 有著內(nèi)建的工具箱,比如一個(gè)依賴信息查看器 (deno info) 和一個(gè)代碼格式化工具 (deno fmt)。
  • 有一組經(jīng)過(guò)審計(jì)的 標(biāo)準(zhǔn)模塊,保證能在 Deno 上工作。
  • 腳本代碼能被打包為一個(gè)單獨(dú)的 JavaScript 文件。

作用

Deno 旨在為現(xiàn)代程序員提供高效、安全的腳本環(huán)境。

它將始終作為單個(gè)可執(zhí)行文件分發(fā),并且該可執(zhí)行文件將能運(yùn)行任何 Deno 程序。給定一個(gè) Deno 程序的 URL,您應(yīng)該能夠用壓縮后不超過(guò) 15 MB 的 Deno 可執(zhí)行文件運(yùn)行它。

Deno 明確地承擔(dān)了運(yùn)行時(shí)和包管理器的角色。它使用標(biāo)準(zhǔn)的瀏覽器兼容協(xié)議(URL)來(lái)加載模塊。

對(duì)于過(guò)去用 bash 或 python 編寫(xiě)的工具腳本來(lái)說(shuō),Deno 是一個(gè)優(yōu)秀的替代品。

目標(biāo)

  • 只分發(fā)一個(gè)獨(dú)立的可執(zhí)行文件 (deno)。

  • 默認(rèn)安全。外部代碼沒(méi)有文件系統(tǒng)、網(wǎng)絡(luò)、環(huán)境的訪問(wèn)權(quán)限,除非顯式開(kāi)啟。

  • 瀏覽器兼容:完全用 JavaScript 編寫(xiě)且不使用全局Deno命名空間(或功能測(cè)試)的程序是 Deno 程序的子集,應(yīng)該能夠直接在現(xiàn)代瀏覽器中運(yùn)行而無(wú)需更改。

  • 提供內(nèi)置工具來(lái)提升開(kāi)發(fā)體驗(yàn),比如單元測(cè)試、代碼格式化、代碼檢查。

  • 不把 V8 的概念泄露到用戶空間。

  • 能夠高效地提供 HTTP - 服務(wù)

與 Node.js 的比較

Deno 不使用 npm,而是使用 URL 或文件路徑引用模塊。 Deno 在模塊解析算法中不使用 package.json。 Deno 中的所有異步操作返回 promise,因此 Deno 提供與 Node 不同的 API。 Deno 需要顯式指定文件、網(wǎng)絡(luò)和環(huán)境權(quán)限。 當(dāng)未捕獲的錯(cuò)誤發(fā)生時(shí),Deno 總是會(huì)異常退出。 使用 ES 模塊,不支持 require()。第三方模塊通過(guò) URL 導(dǎo)入。 import * as log from "https://deno.land/std/log/mod.ts";

其他關(guān)鍵行為

遠(yuǎn)程代碼在第一次運(yùn)行時(shí)獲取并緩存,直到代碼通過(guò) --reload 選項(xiàng)運(yùn)行。(所以它在飛機(jī)上也能工作) 從遠(yuǎn)程 URL 加載的模塊或文件應(yīng)當(dāng)是不可變且可緩存的。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)