精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Deno并不是下一代Node.js

開發 前端
這幾天前端圈最火的事件莫過于 ry(Ryan Dahl) 的新項目 deno 了,很多 IT 新聞和媒體都用了標題:“下一代 Node.js”。這周末讀了一遍 deno 的源碼,特意寫了這篇文章。

這幾天前端圈最火的事件莫過于 ry(Ryan Dahl) 的新項目 deno 了,很多 IT 新聞和媒體都用了標題:“下一代 Node.js”。這周末讀了一遍 deno 的源碼,特意寫了這篇文章。長文預警(5000字,11圖)。

0. 為什么開發 Deno?

這是我上周做的一張圖,介紹了 JavaScript 的發展簡史。剛才修改了一下,添加了對 Node.js 和 Deno 發布時間的標注。

Node.js 和 Deno 分別是 Ryan Dahl 在 2009 年和 2018 年,基于當年***的前端技術開發的非瀏覽器 JavaScript 運行時。

Ryan Dahl 開發 deno 并不是因為 “just for fun”,也不是為了取代 node。下面慢慢解釋。

1. 目前 deno 只是一個 demo

這兩天花時間看了 deno 的源碼(好在是初級階段,源碼很少,也很容易理解),順帶看了所有的 issue 和 pr。不知道“從官方介紹來看,可以認為它是下一代 Node”是如何腦補出來的。

既然是 Node.js 之父的新作,在討論中自然離不開 Node.js。而作者很皮的回復到:

    The main difference is that Node works and Deno does not work : )

    ***的區別就是:Node 可以工作,而 Deno 不行 : )

目前 Deno 只是一個 Demo,甚至連二進制發行版都沒有。好在從源碼編譯比較簡單(如果你使用的不是 Windows 系統)。

在 high-level 層面,Deno 提供了一個盡可能簡單的 V8 到系統 API 的綁定。為什么使用 Golang 替代 C++ 呢,因為相比 Node 而言,Golang 讓我們更加容易的添加新特性,比如 http2 等。

至于為什么不選擇 Rust,作者沒有回答。

我們再對比一下兩者的啟動性能。分別運行: 

  1. console.log('Hello world'

 

我之前寫過一篇文章:Node.js 新計劃:使用 V8 snapshot 將啟動速度提升 8 倍,那如果我們使用 --without-snapshot 參數編譯 Node.js 呢?

 

依然是相差懸殊,畢竟 deno 需要加載一個 TypeScript 編譯器。畢竟是一個 demo 版本,希望以后用力優化。

對于性能提升還有一個思路就是,可以使用 LLVM 作為后端編譯器把 TypeScript 代碼編譯為 WebAssembly 然后在 V8 里面運行,甚至可以直接把源碼編譯成二進制代碼運行。Ryan Dahl 表示 deno 只需要一個編譯器,那就是 TS。但是既然 deno 要兼容瀏覽器,那么 WebAssembly 應該也會被支持。

Deno 可以對 ts 的編譯結果進行緩存(~/.deno/cache),所以目前關注的就是啟動速度和初次編譯速度。

要么就是在發布前先行編譯,如此一來 deno 就脫離了開發的初衷了。deno 是一個 ts 的運行時,那么就應該可以直接運行 ts 代碼,如果提前把 ts 編譯成 js,那么 deno 就回退到 js 運行時了。

2. 初學者應該學習 Node.js 還是 Deno?

對于這個問題,Ryan Dahl 的回答干凈利落:

    Use Node. Deno is a prototype / experiment.

    使用 Node。Deno 只是一個原型或實驗性產品。

從介紹可以看到,Deno 的目標是不兼容 Node,而是兼容瀏覽器。

所以,Deno 不是要取代 Node.js,也不是下一代 Node.js,也不是要放棄 npm 重建 Node 生態。deno 的目前是要擁抱瀏覽器生態。

不得不說這個目標真偉大。Ryan Dahl 開發了 Node.js,社區構建出了整個 npm 生態。我在另一個回答 justjavac:純前端開發眼里nodejs到底是什么? 里面寫到“Node.js 是前端工程化的重要支柱之一”。

雖然后來 Ryan Dahl 離開 Node.js 去了 Golang 社區,但是現在 Ryan Dahl 又回來了,為 JavaScript 社區帶來了 Golang,開發出了 Deno,然后擁抱瀏覽器生態。👍

我們看看 deno 的關于 Web API 的目標:

  • High level
    • Console √
    • File/FileList/FileReader/Blob
    • XMLHttpRequest
    •  WebSocket
  • Middle level
    • AudioContext/AudioBuffer
    • Canvas

甚至還會包括 webGL 和 GPU 等的支持。

3. Deno 的架構

Parsa Ghadimi 繪制了一張關于 Deno 的架構圖

 

底層使用了作者開發的 v8worker2,而 event-loop 則基于 pub/sub 模型。關于 v8worker 可以看看這個 PPT:https://docs.google.com/prese...

我比較好奇的是 deno 使用了 protobuf,而沒有使用 Mojo。既然目標是要兼容瀏覽器,卻不使用 Mojo,而是要在 protobuf 上重新造輪子,可見 Ryan Dahl 是真正的“輪子哥”啊。但是從 issue 中可以看出,Ryan Dahl 之前是沒有聽說過 Mojo 的,但是他看完 mojo 之后,依然覺得 protobuf 的選擇是正確的。

Mojo 是 Google 開發的新一代 IPC 機制,用以替換舊的 Chrome IPC。目前 Chrome 的***版本是 67,而 Google 的計劃是在 2019 年的 75 版本用 mojo 替換掉所有的舊的 IPC。

Mojo 的思路確實和 protobuf 畢竟像,畢竟都是 Google 家的。舊的 IPC 系統是基于在 2 個進程(線程)之間的命名管道(IPC::Channel)實現的。這個管道是一個隊列,進程間的 IPC 消息按照先進先出的順序依次傳遞,所以不同的 IPC 消息之間有先后次序的依賴。相比之下,Mojo 則為每一個接口創建了一個獨立的消息管道,確保不同接口的 IPC 是獨立的。而且為接口的創建獨立的消息管道的代價也并不昂貴,只需分配少量的堆內存。

Mojo 的架構設計:

 

我們可以看一下 Chrome 引入 Mojo 之后的架構變化。

之前:

 

之后:

 

是不是有點微服務的感覺。

熟悉 Java 的 Spring 的可以明顯看出這個依賴倒置。Blink 本來是瀏覽器***層的排版引擎,通過 Mojo,Blink 變成了要給中間模塊。最近大熱的 Flutter 也是基于 Mojo 架構的。

4. TypeScript VS JavaScript

deno 的介紹是一個安全的 TypeScript 運行環境。但是我們看源碼就會發現,deno 集成進了一個 TypeScript 編譯器,而入口文件中 ry/deno:main.go 

  1. // It's up to library users to call   
  2. // deno.Eval("deno_main.js""denoMain()")   
  3. func Eval(filename string, code string) {   
  4.     err := worker.Load(filename, code)   
  5.     exitOnError(err)   
  6. } // It's up to library users to call  
  7. // deno.Eval("deno_main.js""denoMain()")  
  8. func Eval(filename string, code string) {  
  9.     err := worker.Load(filename, code)  
  10.     exitOnError(err)  

使用 V8 運行的 deno_main.js 文件。是 JavaScript 而不是 TypeScript 。

在前面的分析中我們知道這會影響 deno 的初次啟動速度。那么對于執行速度呢?從理論上,TypeScript 作為一種靜態類型語言,編譯完成的 JavaScript 代碼會有更快的執行速度。我之前在《前端程序員應該懂點V8 知識》曾經提到過 V8 對于 JavaScript 性能提升有一項是 Type feedback。

當 V8 執行一個函數時,會基于函數傳入的實參(注意是實參,而不是形參,因為 JavaScript 的形參是沒有類型的)進行即時編譯(JIT):

 

但是當后面再次以不同的類型調用函數時,V8 會進行去優化(Deopt)操作。

(將之前優化完的結果去掉,稱為“去優化”)

 

但是如果我們使用 TypeScript ,所有的參數都是由類型標注的,因此可以防止 V8 引擎內部執行去優化操作。

5. 對 deno 性能的展望和猜想

雖然 TypeScript 可以避免 V8 引擎的去優化操作,但是 V8 執行的是 ts 編譯后的結果,我們通過字節碼或者機器碼可以看到,V8 依然生成了 Type Check 的代碼,每次調用函數之前,V8 都會對實參的類型進行檢查。也就是說,雖然 TypeScript 保證了函數的參數類型,但是編譯成 JavaScript 之后,V8 并不能確定函數的參數類型,只能通過每次調用前的檢查來保證參數的類型。

其次,當 V8 遇到函數定義時,并不知道參數的類型,而只有函數被調用后,V8 才能判斷函數的類型,才對函數進行 Typed 即時編譯。這里又有一個矛盾了,typescript 在函數定義時就已經知道了形參的類型,而 V8 只有在函數調用時才根據實參的類型進行優化。

所以,目前 deno 的架構還存在很多問題,畢竟只是一個 demo。未來還有很多方向可以優化。

V8 是一個 JavaScript 運行時,而 deno 如果定義為“安全的 TypeScript 運行時”,至少在目前的架構上,性能是有很大損失的。但是目前還不存在一個 TypeScript 運行時,退而求其次只能在 V8 前面放一個 TypeScript 編譯器了。

執行流程是這樣的:

 

雖然我在項目中沒有使用過 TypeScript ,但是基本上我在項目里面寫的第三方庫都會提供一d.ts 文件。目前 TypeScript ***的用途還是體現在開發和維護過程中。

我們想到的一個方式就是 fork 一份 V8 的源碼,然后把編譯流程整合進去。TypeScript 在編譯為 JavaScript 的過程中也需要一份 AST,然后生成 js 代碼。V8 執行 js 代碼是再 parse 一份 AST,基于 AST 生成中間代碼(ByteCode)。如果 TypeScript 可以直接生成對用的字節碼則會提升運行時的性能。

不過 Ryan Dahl 大概不會這么干。但是也未必,畢竟社區已經把 TypeScript 的一個子集編譯為 WebAssembly 了。

之前微軟的 JScript 和 VBScript 在和 JavaScript 的競爭中敗下陣來,而現在 TypeScript 勢頭正猛。雖然對 ES 規范的兼容束縛了 TypeScript 的發展,但很期待微軟可以提供一個 TS 運行時,或者在 Chakra 引擎增加對 TS 運行時的支持。

6. 總結

不論如何,deno 是一個非常偉大的項目,但卻不是“下一代 Node.js”。

PS:昨天 Ryan Dahl 在 JS Conf 做了《Design Mistakes in Node》的演講,目前只有 PPT,還沒有 Youtube 視頻。而 8 年前的 2009 年,Ryan Dahl 也在 JS Conf 做了一次演講,這次演講誕生了 Node.js。

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2011-03-23 09:18:52

LAMPnode.js

2013-07-27 21:28:44

2025-09-08 06:30:00

Fresh框架開發

2013-06-27 11:21:17

2025-01-03 09:24:10

模型架構論文

2020-09-16 10:28:54

邊緣計算云計算數據中心

2020-09-27 17:27:58

邊緣計算云計算技術

2020-05-20 09:26:59

Node.jsDenoJavaScript

2022-03-04 07:37:16

DenoNode.js項目

2013-09-09 16:28:36

2016-01-26 11:58:12

2012-07-16 10:08:31

下一代ITBYOD

2012-12-10 16:15:43

下一代防火墻NGWF

2023-04-28 10:02:50

2020-06-02 08:05:28

智能電表蜂窩物聯網NB-IoT

2021-05-22 23:01:21

人工智能網絡安全

2024-02-26 14:46:53

移動計算人工智能5G

2015-10-15 10:30:32

2013-05-10 09:36:04

下一代網絡銳捷網絡簡網絡

2012-07-16 09:27:19

BYOD下一代IT
點贊
收藏

51CTO技術棧公眾號

青青草激情视频| 天天综合网久久| 亚洲av片在线观看| 日本午夜精品视频在线观看| 中文字幕欧美在线| 日本少妇xxx| 亚洲精品动漫| 亚洲精品少妇30p| 久久久影院一区二区三区| 91丨九色丨海角社区| 亚洲欧美伊人| 在线午夜精品自拍| 黄色录像a级片| 91精品网站在线观看| 欧美日韩精品中文字幕| 中文字幕色一区二区| 天堂中文在线8| 国产一区二区0| 国产成人在线播放| 国产一级中文字幕| 91成人看片| 亚洲香蕉在线观看| 东京热av一区| 国产精品亚洲四区在线观看| 狠狠做深爱婷婷久久综合一区| 一区二区日本伦理| 男男激情在线| 不卡在线视频中文字幕| 成人情趣片在线观看免费| 中文字幕免费观看| 国产亚洲精品v| 欧美激情在线观看视频| 91视频最新网址| blacked蜜桃精品一区| 亚洲第一区在线观看| 国产欧美精品一二三| 外国电影一区二区| 色偷偷成人一区二区三区91| 日韩a∨精品日韩在线观看| 国产福利视频在线观看| 一区在线中文字幕| 水蜜桃一区二区三区| 伦理片一区二区三区| av中文字幕亚洲| 91大片在线观看| 国产女主播福利| 精品写真视频在线观看| 国产精品xxx视频| 国产专区第一页| 国产一区二区三区的电影 | 亚洲中字在线| 45www国产精品网站| 日韩精品视频免费看| 好看的av在线不卡观看| 欧美黄色成人网| 久久高清无码视频| 伊人久久大香线蕉综合热线| 欧美老少配视频| 精品少妇久久久久久888优播| 性欧美69xoxoxoxo| 欧美老女人在线视频| 欧美精品久久久久性色| 欧美特黄视频| 91国内在线视频| 天天干天天干天天| 青青青伊人色综合久久| 国产日本欧美视频| av在线资源观看| 成人一区二区三区中文字幕| 国产精品一区二区不卡视频| 天堂中文在线看| 久久久五月婷婷| 色女人综合av| 久久日韩视频| 亚洲国产日日夜夜| 激情婷婷综合网| 日韩综合久久| 亚洲电影免费观看高清| 久久国产精品影院| 97偷自拍亚洲综合二区| 欧美激情一区二区三区成人 | 亚洲成人在线| 国产99久久久欧美黑人| 国产又粗又大又爽| 99在线精品观看| 亚洲欧美一区二区原创| 性欧美1819sex性高清大胸| 亚洲1区2区3区4区| 久久久久国产一区| 福利电影一区| 自拍亚洲一区欧美另类| 免费在线观看日韩| 首页国产欧美日韩丝袜| 亚洲精品欧美日韩专区| 艳母动漫在线看| 国产精品久久久久久久久快鸭| 国产激情片在线观看| 免费成人动漫| 欧美一级欧美三级| 美女被到爽高潮视频| 欧美91大片| 国产成人精品免高潮费视频| 国产精品一区二区三区在线免费观看| 成人高清在线视频| 一本一道久久a久久综合精品| 国产啊啊啊视频在线观看| 色婷婷精品久久二区二区蜜臀av| 天天干天天曰天天操| 国产精品美女久久久久久不卡 | 日韩一级二级三级精品视频| 亚洲精品视频大全| 中文字幕免费一区二区| 日本人成精品视频在线| 亚洲免费黄色片| 一区在线播放视频| 婷婷丁香激情网| 亚洲ab电影| 九九热这里只有在线精品视| 波多野结衣mp4| 91在线视频免费91| 国产成a人亚洲精v品在线观看| 精品欧美一区二区三区在线观看| 精品国产一区二区三区四区四 | 一区二区高清在线| 亚洲欧美国产中文| 精品国产123区| 97久久久免费福利网址| 国产成人久久精品77777综合 | 亚洲人成网站在线观看播放| 96av在线| 精品精品欲导航| 欧美做爰爽爽爽爽爽爽| 久久99精品久久久久久久久久久久| 久久久99爱| 国产盗摄一区二区| 精品美女一区二区三区| 国产成人自拍网站| 久久精品久久精品| 自拍偷拍亚洲色图欧美| 老司机精品视频网| 在线视频日韩精品| 中文字幕一区二区人妻| 九色蝌蚪在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 激情五月综合色婷婷一区二区 | 成年人免费大片| 盗摄牛牛av影视一区二区| 久久亚洲私人国产精品va| 一本一道精品欧美中文字幕| 国产人久久人人人人爽| 国产成人精品无码播放| 九九精品久久| 国产精品高潮呻吟久久av无限| 免费资源在线观看| 欧美在线观看视频在线| youjizz亚洲女人| 久久99久久99| 影音先锋成人资源网站| 日本成人精品| 韩国欧美亚洲国产| 婷婷久久久久久| 色综合久久66| 自拍偷拍你懂的| 久久99精品久久久久久久久久久久| 亚洲免费不卡| 日韩一级淫片| 国语自产在线不卡| 色播色播色播色播色播在线| 色综合久久九月婷婷色综合| 国产激情av在线| 韩国午夜理伦三级不卡影院| 一二三四中文字幕| 加勒比色综合久久久久久久久| 97国产在线视频| 激情小说 在线视频| 欧美日韩的一区二区| 国产美女福利视频| 成人久久久精品乱码一区二区三区| 91九色丨porny丨国产jk| 网红女主播少妇精品视频| 国产精品久久99久久| 蜜桃视频网站在线| 欧美成人a在线| 人妻丰满熟妇av无码区| 国产精品久久久久久亚洲毛片| 中文字幕成人免费视频| 激情视频一区| 日韩av不卡播放| 亚洲图色一区二区三区| 2019亚洲日韩新视频| 日本高清在线观看wwwww色| 欧美v亚洲v综合ⅴ国产v| 日韩中文字幕在线观看视频| 国产精品色呦呦| youjizz.com国产| 日韩影院免费视频| 亚洲精品久久久久久久蜜桃臀| 国产精品亚洲二区| 国产成人精品日本亚洲11| a欧美人片人妖| 欧美美女操人视频| 国产黄色免费在线观看| 欧美变态tickling挠脚心| 中文字幕第四页| 亚洲另类中文字| 久久精品—区二区三区舞蹈| 国产一区激情在线| 精品久久久久av| 国产精品www994| 宅男一区二区三区| 国产精品欧美在线观看| 俄罗斯精品一区二区三区| 亚洲天堂1区| 欧美做爰性生交视频| 国产网红在线观看| 久久黄色av网站| 国产中文字幕在线视频| 精品播放一区二区| 中文字幕777| 日韩欧美黄色动漫| 亚洲免费激情视频| 伊人性伊人情综合网| av资源在线免费观看| 久久综合九色欧美综合狠狠| 白丝校花扒腿让我c| 美女视频网站黄色亚洲| 国产v亚洲v天堂无码久久久| 一区二区三区国产在线| 欧美成人精品免费| 午夜视频一区| 男人j进女人j| 久久久久午夜电影| 在线不卡日本| 欧美激情黄色片| 一区二区三区四区不卡| 欧美伦理在线视频| 日本精品二区| 国产精选一区| 日本在线播放一区| 欧美限制电影| 亚洲看片网站| 欧美疯狂party性派对| 亚洲第一综合| 国产精品精品| 强开小嫩苞一区二区三区网站 | 精品一区91| 亚洲一区二区三| 视频免费一区二区| 大波视频国产精品久久| y111111国产精品久久久| 91久久精品日日躁夜夜躁国产| 成人国产精品久久| 亚洲综合中文字幕68页| 日韩欧美激情电影| 国产一区二区不卡视频| 日本国产精品| 欧美lavv| 久久一区二区三区电影| 亚洲午夜久久久影院伊人| 国产精品久久久久久久免费观看| 中文字幕成人一区| 国产精品v一区二区三区| 老太脱裤让老头玩ⅹxxxx| 99视频一区| 日本爱爱免费视频| 激情六月婷婷综合| 国产国语老龄妇女a片| av在线不卡观看免费观看| 在线免费观看黄色小视频| 国产精品网站在线| 免费一级片视频| 欧美日韩精品二区| 亚洲一区二区激情| 日韩女优av电影| 久久精品a一级国产免视看成人| 一区二区三区回区在观看免费视频| 看黄网站在线观看| 97热精品视频官网| 国产精品高潮久久| 国产v亚洲v天堂无码| 久久爱www成人| 秋霞在线一区二区| 国产日韩亚洲| 污污网站在线观看视频| 成人av网址在线| 国产午夜精品久久久久久久久| 亚洲品质自拍视频| 天天干天天干天天操| 欧美日本国产视频| 天堂国产一区二区三区| 综合久久五月天| 国产99在线观看| 成人性生交xxxxx网站| 欧美日韩破处| 樱空桃在线播放| 视频在线在亚洲| 免费高清视频在线观看| 久久久久久久网| 麻豆影视在线播放| 欧美色综合网站| 偷拍精品一区二区三区| 精品国产区一区二区三区在线观看| 啦啦啦中文在线观看日本| 国产精品美女网站| 日本国产精品| 欧美另类videosbestsex日本| 可以看av的网站久久看| 精品人妻无码中文字幕18禁| 久久久不卡影院| 国产无码精品一区二区| 在线成人午夜影院| 韩国福利在线| 97在线视频免费播放| 国产精品美女久久久久人| 视频一区视频二区视频三区视频四区国产 | 国产成人免费视频网站| 美国黑人一级大黄| 欧美日韩一区二区在线播放| www.色婷婷.com| 日韩视频免费大全中文字幕| 不卡av播放| 精品一区二区久久久久久久网站| 91精品啪在线观看国产18| 一区二区在线播放视频| 91在线视频在线| 日韩污视频在线观看| 欧美一区二区三区在线看| av在线电影免费观看| 青青精品视频播放| 农村少妇一区二区三区四区五区 | 八戒八戒神马在线电影| 国产日韩综合一区二区性色av| 蜜臀av免费一区二区三区| 日本福利视频在线| www.av亚洲| 日本熟妇毛耸耸xxxxxx| 精品国产网站在线观看| av免费在线观看网站| 51国偷自产一区二区三区的来源| 国产精品久久观看| 日韩精品视频一二三| 亚洲欧美自拍偷拍色图| 亚洲专区在线播放| 最近中文字幕日韩精品| а√天堂资源国产精品| 亚洲国产日韩美| 麻豆91小视频| 三级在线观看免费大全| 91精品国产综合久久久蜜臀粉嫩| 日韩精品成人av| 91理论片午午论夜理片久久| 91成人免费| 亚洲乱妇老熟女爽到高潮的片 | 日韩在线观看免费高清完整版| 国产亚洲欧美日韩精品一区二区三区 | 亚洲精品日产精品乱码不卡| 国产精品人妻一区二区三区| 日韩视频免费在线观看| 免费观看亚洲视频大全| 国产成人在线小视频| 99久久99精品久久久久久| 日本中文字幕第一页| 一本久久综合亚洲鲁鲁| 日本免费在线一区| 欧美 亚洲 视频| 91丝袜美腿高跟国产极品老师| www.久久精品视频| 色吧影院999| av自拍一区| 色综合av综合无码综合网站| 国产精品私人自拍| 精品国产18久久久久久| 久久免费视频在线| 国产精品密蕾丝视频下载| 手机版av在线| 亚洲国产精品麻豆| 国产免费a∨片在线观看不卡| 国产精品吴梦梦| 黄色成人精品网站| 国产高潮呻吟久久| 91精品国产品国语在线不卡| xxxcom在线观看| 日韩免费中文专区| 成人亚洲一区二区一| 无码无套少妇毛多18pxxxx| 久久久精品久久| 欧美激情网址| 中文国产在线观看| 福利精品视频在线| 黄色成人在线| 日韩欧美国产二区| 播五月开心婷婷综合| japanese国产在线观看| 欧美黑人巨大xxx极品| 精品视频免费| 国产a级黄色片| 在线电影院国产精品| 亚洲人体影院| 香港三级日本三级a视频| 国产日韩欧美精品综合|