国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

理解deno-基礎篇

heartFollower / 3114人閱讀

摘要:介紹是一個基于和的的安全運行時。文件中主要是的代碼,是功能的具體實現。圖來自于官網,圖的架構圖預告接下來還會有兩篇文章分析的內部原理

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
引入外部包
import * as log from "https://deno.land/x/std/log/mod.ts";
執行異步方法
(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內部結構

下圖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的內部原理~~~

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102405.html

相關文章

  • deno原理-通信實現

    摘要:理解基礎篇原理篇一啟動加載通信方式執行代碼和相似,包含同步和異步的方式,異步方式通過的實現。同時在異步通信完成后,會創建一個對象,將作為,作為,加入中。 理解deno-基礎篇deno-原理篇一啟動加載 通信方式 deno執行代碼和node相似,包含同步和異步的方式, 異步方式通過async的實現。 Typescript/Javascript調用rust 在上一節中講到deno的啟動時會...

    ChristmasBoy 評論0 收藏0
  • Deno 并不是下一代 Node.js

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

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

    摘要:里面有一句描述,可以看到的目標是兼容瀏覽器。那么這里的兼容瀏覽器到底如何是什么意思呢我簡單談談我的理解吧。很多人還有誤解以為兼容瀏覽器指的是會提供類似里的寫法。 Deno 里面有一句描述:Aims to be browser compatible,可以看到 Deno 的目標是兼容瀏覽器。那么這里的兼容瀏覽器到底如何是什么意思呢? 我簡單談談我的理解吧。 首先這里的兼容性肯定不是 Den...

    Yangyang 評論0 收藏0
  • 從源碼一步步學習,Ryan Dahl的Deno實現原理

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

    goji 評論0 收藏0
  • 我為 VS Code 開發了一個 Deno 插件

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

    YanceyOfficial 評論0 收藏0

發表評論

0條評論

heartFollower

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<