Deno 是 Node.js 之父新造的轮子。旨在用 Golang 和 TypeScript 实现一个很小的 JS runtime。(其目标不是取代 Node.js)
由于 Deno 还没有发布可直接运行的二进制文件,所以想要了解 Deno 的功能的话你有两种方式:
第一种方式我在 macOS 上折腾了好久,依然出现各种报错(主要问题是天朝网络环境),只好作罢,现在只能等 GitHub 网友推出 Dockerfile 再试试。有在 macOS 上运行成功的可以说下经验。
第二种方式其实也不算难,因为目前 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 共四个。
前两个 API 的使用方式见:testdata/009_pub_sub.ts
后两个 API 的使用方式见:tests.ts
除此之外还有其他 API,见 testdata 里面的 15 个左右的测试文件,目测有如下功能:
上面是 JS 方面的功能,有些功能应该没写进测试里,我还没时间细看。
可以看出 Deno 从一开始就没有想要兼容 Node.js。
除此之外 Deno 还有一个 V8 worker,它提供的 API 也很简单:
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 工程师指日可待,真是百利而无一害\~
少年,我看好你。
https://zhuanlan.zhihu.com/p/37645653
饥人谷一直致力于培养有灵魂的编程者,打造专业有爱的国内前端技术圈子。如造梦师一般帮助近千名不甘寂寞的追梦人把编程梦变为现实,他们以饥人谷为起点,足迹遍布包括facebook、阿里巴巴、百度、网易、京东、今日头条、大众美团、饿了么、ofo在内的国内外大小企业。 了解培训课程:加微信 xiedaimala03,官网:https://jirengu.com
本文作者:饥人谷方应杭老师