理解deno-基础篇

36次阅读

共计 1247 个字符,预计需要花费 4 分钟才能阅读完成。

deno 介绍
deno 是一个基于 v8、rust 和 Tokio 的 Javascript/Typescript 的安全运行时。它在内部嵌入了一个 typescript 的编译器。可以将 typescript 编译成 js 然后运行在 v8 上,并通过 c ++ libdeno 实现 js 与 rust 的通信交互,当然 deno 也可以直接运行 Javascript 代码。
deno 安装
linux/mac
curl -fsSL https://deno.land/x/install/install.sh | sh

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

详细的细节请参考官网安装介绍
deno 的简单例子
计算斐波那契数列公式

摘抄自维基百科斐波那契数列
run javascript
test.js
function fibo(n) {
if (n === 0) return 0;
let fn = 0, nextFn = 1;
let tmp_fn = 0, tmp_nextFn = 0;
for (var i = 0; i < n; i++) {
tmp_fn = nextFn;
tmp_nextFn = nextFn + fn;
fn = tmp_fn;
nextFn = tmp_nextFn;
}
return tmp_fn;
}

console.log(fibo(13));

deno ./test.js
run typescript
test.ts
function fibo(n: number) {
if (n === 0) return 0;
let fn: number = 0, nextFn: number = 1;
let tmp_fn: number = 0, tmp_nextFn: number = 1;
for (let i: number = 0; i < n; i++) {
tmp_fn = nextFn;
tmp_nextFn = nextFn + fn;
fn = tmp_fn;
nextFn = tmp_nextFn;
}
return tmp_fn;
}

console.log(fibo(13));

deno ./test.ts
deno 内部结构
下图 1 是 deno 的部分文件截图

图 1 deno 文件的部分截图
上图中圈出来的三个文件夹分别是

js
libdeno
src

分别对应 deno 的 api 层、中间层、和实现层,其中 js 中主要是 typescript 的代码,包含 typescript 的编译器和 deno 暴露给用户的 api。libdeno 中主要是 c ++ 代码,用来加载 v8 实例,实现 typescript 和 rust 的通信。src 文件中主要是 rust 的代码,是 deno 功能的具体实现。例如用户使用 File 实例的 write 方法来写文件,实际上是 api 层(typescript)通过中间层(libdeno)将数据传输给实现层(rust),最终写文件操作由 rust 去完成。deno 结合了 Typescript/Javascript 的易用性和 rust 的系统语言能力。下图 2 可以清晰的表示 js 和 rust 之间的逻辑关系。

图来自于官网,图 2 deno 的架构图
预告
~~~接下来还会有两篇文章分析 deno 的内部原理~~~

正文完
 0