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 工程师指日可待,真是百利而无一害~
少年,我看好你。