Deno-新一代JavaScript和TypeScript運行環境
前言
Deno 是一個新興的 JavaScript 和 TypeScript 運行環境,能讓JavaScript和TypeScript程式,在瀏覽器之外的地方執行,並且為了安全起見,所有程式預設在沙盒中執行,而且全面地使用Promises,解決尾延遲的問題。
Deno 的由來
Deno 的創造者 Ryan Dahl,也是 Node.js 的創造者,在西元 2018 年的演講中提到了在發展 Node.js時沒有Promises或async/await的概念, 為了解決這個設計缺陷,由於相容性的考量,直接修改 Node.js 是不實際的,Ryan Dahl 決定放棄Node.js,從頭寫一個。deno 這個名字就是來自 Node 的字母重新組合(Node = no + de)。
學習 Deno 的方式
Deno 並沒有創造新的語言,仍然可參考現存的 JavaScript 和 TypeScript 的學習資源來學習 Deno。
安裝Deno
Shell (Mac, Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh
PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex
Homebrew (Mac):
brew install deno
Chocolatey (Windows):
choco install deno
Scoop (Windows):
scoop install deno
Build and install from source using Cargo
cargo install deno
安裝Deno並執行範例
使用PowerShell安裝Deno
開啟命令提示字元視窗,輸入Deno --version可以看到已經安裝成功,Deno版本為1.2.3,V8版本為8.6.334,typescript版本為3.9.2
Deno 官方文件上有提供很多的範例檔案,檔案位置如下:
https://github.com/denoland/deno/tree/master/std/examples/
輸入
deno run https://github.com/denoland/deno/tree/master/std/examples/welcom.ts
執行welcom.ts這隻檔案
可以看到顯示出”Welcome to Deno”
接著來試試聊天頁面的範例
TS檔案的位置https://deno.land/std/examples/chat/server.ts
內容如下
輸入deno run https://deno.land/std/examples/chat/server.ts
出現錯誤內容:Uncaught PermissionDenied:network access to "0.0.0.0:8080"
是因為在Deno裡面需要的permission都要明確的給他,不然會被擋住
因此我們需要執行
deno run --allow-net https://deno.land/std/examples/chat/server.ts
加入”--allow-net”這個參數,給Deno使用網路的權限
順利執行起來之後,來看看結果吧
開啟兩個視窗,可以看到一個簡易聊天室就完成了
實際操作
創建一個新的TS檔,檔名為「denoapp.ts」
輸入內容如下:
我們可以看到,在import語法變得很簡潔,不需要像Node.js一樣,需要下載整包套件在本地
加入console.log("server start on http://127.0.0.1:8080") 啟動後可以清楚知道怎麼連到server
最後的for await 是接收請求的程式碼,設定回應內容
執行denoapp.ts並允許網路權限
瀏覽器開啟 http://127.0.0.1:8080
以上,基本的Deno操作教學就告一段落了