成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

理解deno-基礎(chǔ)篇

heartFollower / 3128人閱讀

摘要:介紹是一個(gè)基于和的的安全運(yùn)行時(shí)。文件中主要是的代碼,是功能的具體實(shí)現(xiàn)。圖來自于官網(wǎng),圖的架構(gòu)圖預(yù)告接下來還會(huì)有兩篇文章分析的內(nèi)部原理

deno介紹

deno是一個(gè)基于v8、rust和Tokio的Javascript/Typescript的安全運(yùn)行時(shí)。它在內(nèi)部嵌入了一個(gè)typescript的編譯器。可以將typescript編譯成js然后運(yùn)行在v8上,并通過c++ libdeno實(shí)現(xiàn)js與rust的通信交互,當(dāng)然deno也可以直接運(yùn)行Javascript代碼。

deno安裝
linux/mac
curl -fsSL https://deno.land/x/install/install.sh | sh
windows
iwr https://deno.land/x/install/install.ps1 | iex

詳細(xì)的細(xì)節(jié)請(qǐng)參考官網(wǎng)安裝介紹

deno的簡單例子 計(jì)算斐波那契數(shù)列公式

摘抄自維基百科斐波那契數(shù)列

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
引入外部包
import * as log from "https://deno.land/x/std/log/mod.ts";
執(zhí)行異步方法
(async () => {
  for (let i = 1; i < Deno.args.length; i++) {
    let filename = Deno.args[i];
    let file = await Deno.open(filename);
    await Deno.copy(Deno.stdout, file);
    file.close();
  }
})();
deno內(nèi)部結(jié)構(gòu)

下圖1是deno的部分文件截圖

圖1 deno文件的部分截圖

上圖中圈出來的三個(gè)文件夾分別是

js

libdeno

src

分別對(duì)應(yīng)deno的api層、中間層、和實(shí)現(xiàn)層,其中js中主要是typescript的代碼,包含typescript的編譯器和deno暴露給用戶的api。libdeno中主要是c++代碼,用來加載v8實(shí)例,實(shí)現(xiàn)typescript和rust的通信。src文件中主要是rust的代碼,是deno功能的具體實(shí)現(xiàn)。例如用戶使用File實(shí)例的write方法來寫文件,實(shí)際上是api層(typescript)通過中間層(libdeno)將數(shù)據(jù)傳輸給實(shí)現(xiàn)層(rust),最終寫文件操作由rust去完成。deno結(jié)合了Typescript/Javascript的易用性和rust的系統(tǒng)語言能力。下圖2可以清晰的表示js和rust之間的邏輯關(guān)系。


圖來自于官網(wǎng),圖2 deno的架構(gòu)圖
預(yù)告

~~~接下來還會(huì)有兩篇文章分析deno的內(nèi)部原理~~~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/102405.html

相關(guān)文章

  • deno原理-通信實(shí)現(xiàn)

    摘要:理解基礎(chǔ)篇原理篇一啟動(dòng)加載通信方式執(zhí)行代碼和相似,包含同步和異步的方式,異步方式通過的實(shí)現(xiàn)。同時(shí)在異步通信完成后,會(huì)創(chuàng)建一個(gè)對(duì)象,將作為,作為,加入中。 理解deno-基礎(chǔ)篇deno-原理篇一啟動(dòng)加載 通信方式 deno執(zhí)行代碼和node相似,包含同步和異步的方式, 異步方式通過async的實(shí)現(xiàn)。 Typescript/Javascript調(diào)用rust 在上一節(jié)中講到deno的啟動(dòng)時(shí)會(huì)...

    ChristmasBoy 評(píng)論0 收藏0
  • Deno 并不是下一代 Node.js

    摘要:長文預(yù)警字,圖。開發(fā)并不是因?yàn)?,也不是為了取代。不知道從官方介紹來看,可以認(rèn)為它是下一代是如何腦補(bǔ)出來的。只是一個(gè)原型或?qū)嶒?yàn)性產(chǎn)品。所以,不是要取代,也不是下一代,也不是要放棄重建生態(tài)。的目前是要擁抱瀏覽器生態(tài)。 這幾天前端圈最火的事件莫過于 ry(Ryan Dahl) 的新項(xiàng)目 deno 了,很多 IT 新聞和媒體都用了標(biāo)題:下一代 Node.js。這周末讀了一遍 deno 的源碼,...

    mmy123456 評(píng)論0 收藏0
  • Deno 兼容瀏覽器具體指的是什么?

    摘要:里面有一句描述,可以看到的目標(biāo)是兼容瀏覽器。那么這里的兼容瀏覽器到底如何是什么意思呢我簡單談?wù)勎业睦斫獍伞:芏嗳诉€有誤解以為兼容瀏覽器指的是會(huì)提供類似里的寫法。 Deno 里面有一句描述:Aims to be browser compatible,可以看到 Deno 的目標(biāo)是兼容瀏覽器。那么這里的兼容瀏覽器到底如何是什么意思呢? 我簡單談?wù)勎业睦斫獍伞?首先這里的兼容性肯定不是 Den...

    Yangyang 評(píng)論0 收藏0
  • 從源碼一步步學(xué)習(xí),Ryan Dahl的Deno實(shí)現(xiàn)原理

    摘要:之父在中的設(shè)計(jì)錯(cuò)誤演講中表示不允許將任意本地函數(shù)綁定至當(dāng)中。所有系統(tǒng)調(diào)用都將通過消息傳遞完成序列化。兩項(xiàng)原生函數(shù)與。這既簡化了設(shè)計(jì)流程,又使得系統(tǒng)更易于審計(jì)。 Node之父ry:在Node中的設(shè)計(jì)錯(cuò)誤演講中表示: 不允許將任意本地函數(shù)綁定至 V8 當(dāng)中。 所有系統(tǒng)調(diào)用都將通過消息傳遞完成(protobuf 序列化)。 兩項(xiàng)原生函數(shù):send 與 recv。 這既簡化了設(shè)計(jì)流程,又使得...

    goji 評(píng)論0 收藏0
  • 我為 VS Code 開發(fā)了一個(gè) Deno 插件

    摘要:自發(fā)布以來就備受關(guān)注,也有很多媒體和開發(fā)者稱為下一代。所以在寫這個(gè)插件之前,我又為寫了一個(gè)插件。插件提供了開箱即用的支持,開發(fā)者不需要任何配置,但是有一個(gè)前提是開發(fā)者需要使用內(nèi)置的。 這幾天為 Deno 開發(fā)了一個(gè) VS Code 插件:Deno support for VSCode,GitHub 地址:https://github.com/justjavac/...。 自 Deno ...

    YanceyOfficial 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

heartFollower

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<