内容简介:deno是一个基于v8、rust和Tokio的Javascript/Typescript的安全运行时。它在内部嵌入了一个typescript的编译器。可以将typescript编译成js然后运行在v8上,并通过c++ libdeno实现js与rust的通信交互,当然deno也可以直接运行Javascript代码。linux/macwindows
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的内部原理~~~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Mechanics of Web Handling
David R. Roisum
This unique book covers many aspects of web handling for manufacturing, converting, and printing. The book is applicable to any web including paper, film, foil, nonwovens, and textiles. The Mech......一起来看看 《The Mechanics of Web Handling》 这本书的介绍吧!