iT邦幫忙

7

Node.js 的競爭對手出現了 -- Deno v1.0 嘗鮮

前言

Node.js 發明人 Ryan Dahl 在2018年 JSconf 演講 『10 Things I Regret About Node.js』,談到 Node.js 的 10 個技術債,他希望能重新開發一個全新的軟體,解決這10個技術債,這也就是 Deno 的起源。

嘗鮮

Deno 在 2020/5/13 發行 v1.0 版,趁熱測試一下,感覺非常舒暢,迫不及待把心得跟同好分享。

安裝

參考 『官方網站』,有各種平台的安裝方式,若是 Windows,則開啟Windows PowerShell執行以下指令:

iwr https://deno.land/x/install/install.ps1 -useb | iex

茶才喝一口就安裝好了,爽 !!

使用說明

執行以下指令,可以顯示命令行執行的相關參數列表及用法。

deno -h

測試

Deno 直接支援 TypeScript,剪貼 『官方網站』 如下程式碼,存成 test1.ts。

import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
const s = serve({ port: 5000 });
console.log("http://localhost:5000/");
for await (const req of s) {
  req.respond({ body: "Hello World\n" });
}

執行下列命令:

deno run test1.ts

出現錯誤,提示要加 --allow-net 參數選項,以開啟網路權限,真貼心。再試一次,執行下列命令:

deno run --allow-net  test1.ts

開啟瀏覽器,輸入URL,http://localhost:5000/ ,出現Hello World,正確無誤。

再看『『GitHub 官網』』,std 目錄下有提供標準的 Library,次目錄 std/examples中有許多的範例,抓 cat.ts 來試試:

// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
const filenames = Deno.args;
for (const filename of filenames) {
  const file = await Deno.open(filename);
  await Deno.copy(file, Deno.stdout);
  file.close();
}

執行下列命令,cat.ts 接收一個參數 -- 檔案名稱,並將檔案內容顯示在畫面上:

deno run cat.ts cat.ts

出現錯誤,提示要加 --allow-read 參數選項,以開啟讀取權限,真厲害,還知道程式要讀取檔案。再試一次,執行下列命令:

deno run --allow-read cat.ts cat.ts

出現檔案內容,正確無誤。

打包成執行檔

哇 !! 還可以打包成執行檔,指令如下:

deno run --allow-net  test1.ts

把 run 改成 install 即可,它會產生一個 cmd 檔,直接執行即可,讚啦 !!

使用框架(Framework)

想進一步使用 KOA 框架試試看,發覺不支援 Deno,但發現有人把 KOA 改寫成 OAK,真頑皮 !!

程式如下,存檔為 oak_test.ts:

import { Application } from "https://deno.land/x/oak/mod.ts";

const app = new Application();

app.use((ctx) => {
  ctx.response.body = "Hello Michael!";
});

await app.listen({ port: 5000 });

執行下列命令:

deno run --allow-net  oak_test.ts

測試一下,又成功了,無比舒暢 !!

期待

接下來,應該有得忙了,左腦負責 AI,右腦負責 Deno,好好把 TypeScript、Deno 烤熟,寫一些有趣的程式,自娛娛人。


2 則留言

0
黑修斯
iT邦新手 5 級 ‧ 2020-05-16 03:28:22

老師您又開始學習之旅啦,太厲害了

哈哈,好久不見。

0

老師您好,我最近也在研究Deno,看到有人也在玩特別開心~

這是我之前寫的文章,想一起交流!
「【圖解Deno教學】介紹x安裝x使用 三合一」
https://ithelp.ithome.com.tw/articles/10231612

讚, 加油 !

我要留言

立即登入留言