一、Deno 簡介 Deno 是一個 JavaScript/TypeScript 的運行時,預設使用安全環境執行代碼,有著卓越的開發體驗。Deno 含有以下功能亮點: 預設安全。外部代碼沒有文件系統、網路、環境的訪問許可權,除非顯式開啟。 支持開箱即用的 TypeScript 的環境。 只分發一個獨立 ...
一、Deno 簡介
Deno 是一個 JavaScript/TypeScript 的運行時,預設使用安全環境執行代碼,有著卓越的開發體驗。Deno 含有以下功能亮點:
預設安全。外部代碼沒有文件系統、網路、環境的訪問許可權,除非顯式開啟。
支持開箱即用的 TypeScript 的環境。
只分發一個獨立的可執行文件(deno)。
有著內建的工具箱,比如一個依賴信息查看器(deno info)和一個代碼格式化工具(deno fmt)。
有一組經過審計的 標準模塊,保證能在 Deno 上工作。
腳本代碼能被打包為一個單獨的 JavaScript 文件。
Deno 是一個跨平臺的運行時,即基於 Google V8 引擎的運行時環境,該運行時環境是使用 Rust 語言開發的,並使用 Tokio 庫來構建事件迴圈系統。Deno 建立在 V8、Rust 和 Tokio 的基礎上,它的架構如下:
1.1 Rust
Rust 是由 Mozilla 主導開發的通用、編譯型編程語言。設計準則為 “安全、併發、實用”,支持函數式、併發式、過程式以及面向對象的編程風格。Deno 使用 Rust 語言來封裝 V8 引擎,通過 libdeno 綁定,我們就可以在 JavaScript 中調用隔離的功能。
1.2 Tokio
Tokio 是 Rust 編程語言的非同步運行時,提供非同步事件驅動平臺,構建快速,可靠和輕量級網路應用。利用 Rust 的所有權和併發模型確保線程安全。Tokio 構建於 Rust 之上,提供極快的性能,使其成為高性能伺服器應用程式的理想選擇。在 Deno 中 Tokio 用於並行執行所有的非同步 IO 任務。
1.3 V8
V8 是一個由 Google 開發的開源 JavaScript 引擎,用於 Google Chrome 及 Chromium 中。V8 在運行之前將JavaScript 編譯成了機器代碼,而非位元組碼或是解釋執行它,以此提升性能。更進一步,使用瞭如內聯緩存(inline caching)等方法來提高性能。有了這些功能,JavaScript 程式與 V8 引擎的速度媲美二進位編譯。在 Deno 中,V8 引擎用於執行 JavaScript 代碼。
二、安裝 Deno
Deno 能夠在 macOS、Linux 和 Windows 上運行。Deno 是一個單獨的可執行文件,它沒有額外的依賴。你可以通過以下方式來安裝它:
使用 Shell (macOS 和 Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh
使用 PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex
使用 Scoop (Windows):
scoop install deno
使用 Chocolatey (Windows):
choco install deno
使用 Homebrew (macOS):
brew install deno
使用 Cargo (Windows,macOS,Linux):
cargo install deno
Deno 也可以手動安裝,只需從 github.com/denoland/deno/releases 下載一個 zip 文件。它僅包含一個單獨的可執行文件。在 macOS 和 Linux 上,你需要為它設置執行許可權。當你成功安裝之後,可以通過執行 deno --version 命令來查看已安裝的 Deno 版本:
$ deno --version
deno 1.0.0
v8 8.4.300
typescript 3.9.2
2.1 deno-cli
deno-cli 命令行界面提供了一組集成功能,讓你可以沉浸在 Deno 的專有開發環境中。以下是 Deno 1.0.0 版本支持的所有子命令:
SUBCOMMANDS: bundle Bundle module and dependencies into single file cache Cache the dependencies completions Generate shell completions doc Show documentation for a module eval Eval script fmt Format source files help Prints this message or the help of the given subcommand(s) info Show info about cache or info related to source file install Install script as an executable repl Read Eval Print Loop run Run a program given a filename or url to the module test Run tests types Print runtime TypeScript declarations upgrade Upgrade deno executable to given version
2.2 REPL
在命令中輸入 deno 命令,你就會啟動一個 REPL(Read-Execute-Print-Loop):
$ deno
Deno 1.0.0
exit using ctrl+d or close()
1 + 2
3
const name = “semlinker”;
undefined
console.log(name);
semlinker
undefined
三、Deno 初體驗
3.1 welcome demo
相信一些讀者安裝完 Deno 已經迫不及待了,現在我們立馬來體驗一下 Deno 應用程式。首先打開你熟悉的命令行,然後在命令行輸入以下命令:
$ deno run https://deno.land/std/examples/welcome.ts Download https://deno.land/std/examples/welcome.ts Warning Implicitly using master branch https://deno.land/std/examples/welcome.ts Compile https://deno.land/std/examples/welcome.ts Welcome to Deno