Deno 並非下一代 Node.js

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

0. 爲何開發 Deno?

這是我上週作的一張圖,介紹了 JavaScript 的發展簡史。剛纔修改了一下,添加了對 Node.js 和 Deno 發佈時間的標註。 Node.js 和 Deno 分別是 Ryan Dahl 在 2009 年和 2018 年,基於當年最新的前端技術開發的非瀏覽器 JavaScript 運行時node

 

JavaScript 歷史(Node & Deno)

 

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 : )spa

最大的區別就是:Node 能夠工做,而 Deno 不行 : )code

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

在 high-level 層面,Deno 提供了一個儘量簡單的 V8 到系統 API 的綁定。爲何使用 Golang 替代 C++ 呢,由於相比 Node 而言,Golang 讓咱們更加容易的添加新特性,好比 http2 等。ip

至於爲何不選擇 Rust,做者沒有回答。開發

咱們再對比一下二者的啓動性能。分別運行:

console.log('Hello world')

 

 

我以前寫過一篇文章:Node.js 新計劃:使用 V8 snapshot 將啓動速度提高 8 倍,那若是咱們使用 --without-snapshot 參數編譯 Node.js 呢?

 

 

依然是相差懸殊,畢竟 deno 須要加載一個 TypeScript 編譯器。畢竟是一個 demo 版本,但願之後用力優化。

相關文章
相關標籤/搜索