Deno-新一代JavaScript和TypeScript運行環境

陳怡昌 Harry Chen 2020/08/16 12:53:58
1244

前言

Deno 是一個新興的 JavaScript TypeScript 運行環境,能讓JavaScriptTypeScript程式,在瀏覽器之外的地方執行,並且為了安全起見,所有程式預設在沙盒中執行,而且全面地使用Promises,解決尾延遲的問題。

 

 

Deno 的由來

Deno 的創造者 Ryan Dahl,也是 Node.js 的創造者,在西元 2018 年的演講中提到了在發展 Node.js時沒有Promisesasync/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.3V8版本為8.6.334typescript版本為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操作教學就告一段落了

陳怡昌 Harry Chen