理解deno-基础篇

栏目: 前端 · 发布时间: 5年前

内容简介: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的简单例子

计算斐波那契数列公式

理解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的部分文件截图

理解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之间的逻辑关系。

理解deno-基础篇

图来自于 官网 ,图2 deno的架构图

预告

~~~接下来还会有两篇文章分析deno的内部原理~~~


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

让创意更有黏性

让创意更有黏性

[美] 奇普·希思、[美] 丹·希思 / 姜奕晖 / 中信出版社 / 2014-1-8 / 49.00元

你或许相信在太空中唯一能看到的人工建筑就是万里长城,可乐能腐蚀人体骨骼,我们的大脑使用了10%;与此同时,你却记不得上周例会上领导的安排,昨天看过的那本书里写了什么,上次参加培训的主要内容…… 为什么? 这就引发出《让创意更有黏性》的核心问题:什么样的观点或创意具有强有力的黏性,能被他人牢牢记住? 国际知名行为心理学家希思兄弟根据大量的社会心理学研究案例,揭示了让创意或观点具有黏......一起来看看 《让创意更有黏性》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具