Deno 是 Node.js 之父新造的輪子。旨在用 Golang 和 TypeScript 實現一個很小的 JS runtime。(其目標不是取代 Node.js)git
因爲 Deno 尚未發佈可直接運行的二進制文件,因此想要了解 Deno 的功能的話你有兩種方式:github
第一種方式我在 macOS 上折騰了很久,依然出現各類報錯,只好做罷,如今只能等 GitHub 網友推出 Dockerfile 再試試。有在 macOS 上運行成功的能夠說下經驗。bash
第二種方式其實也不算難,由於目前 Deno 的功能真的挺少的。學習
首先打開 deno.d.ts 能夠看到 deno 提供的 API測試
declare module "deno" {
type MessageCallback = (msg: Uint8Array) => void;
function sub(channel: string, cb: MessageCallback): void;
function pub(channel: string, payload: Uint8Array): null | ArrayBuffer;
function readFileSync(filename: string): Uint8Array;
function writeFileSync(
filename: string,
data: Uint8Array,
perm: number
): void;
}
複製代碼
sub、pub、readFileSync 和 writeFileSync 共四個。fetch
除此以外還有其餘 API,見 testdata 裏面的 15 個左右的測試文件,目測有以下功能:ui
上面是 JS 方面的功能,有些功能應該沒寫進測試裏,我還沒時間細看。spa
能夠看出 Deno 從一開始就沒有想要兼容 Node.js。code
除此以外 Deno 還有一個 V8 worker,它提供的 API 也很簡單:ip
declare namespace V8Worker2 {
function print(...args: any[]): void;
type RecvCallback = (ab: ArrayBuffer) => void;
function recv(cb: RecvCallback): void;
function send(ab: ArrayBuffer): null | ArrayBuffer;
}
複製代碼
就這三個 API。send 和 recv 的使用方法見 dispatch.ts#L60。 deno#pub 就是基於 send 實現的。
若是你看好 Deno,如今學習 go,而後看 Deno 源碼,說不定一年後你就是 Deno 大佬了~!
就算 Deno 沒火,你也學會了 go,轉職 go 工程師指日可待,真是百利而無一害~
少年,我看好你。