好久不見,Yorkie 最近做了一個小東西,在此分享給大家!
先放個連結:Rokid/shadow-node
從名字來看,他可不是一個 Node.js 的 C++ Addon,而是可以執行 Node.js 程式的另一個執行時(Runtime),相比 Node.js,具有更快的啟動速度以及更小的記憶體佔用、更加節省記憶體的模組載入方式!原來一個 Node.js 應用需要好幾十M的執行時記憶體,現在可能只需要幾兆就可以搞定了,並且擁有更快的啟動速度。這也是因為 ShadowNode 不再使用 v8 作為 JavaScript 引擎,而是使用一款三星出品的 JerryScript 在做底層的解釋執行!
ShadowNode 目前支援的模組還比較有限,不過一些基礎的如 HTTP/NET/DNS/Child Process 等都是支援的,並且除此之外,還預設支援 DBus 通訊方式,對於像 Linux 平臺,簡直是不要太方便,另外,對於硬體玩家,如果有興趣移植到自己的開發板上的,也支援了諸如 I2C/ADC/GPIO 等這樣的硬體介面,也就是說接入硬體僅僅寫寫指令碼就能把你的硬體玩起來!另外,也可以把他移植到你家裡的任意裝置上,作為指令碼語言使用,也是不錯的選擇!
在此,我對 ShadowNode 寄予著非常大的希望,目前 Node.js 在嵌入式裝置來說,無可避免都是記憶體佔用的大戶,之前 Tessel 曾經嘗試把 JavaScript程式碼編譯成 Lua 來達到降低記憶體的目的,也有一些不同的開發板使用像 JerryScript 這樣低記憶體的引擎/虛擬機器,然後僅僅支援了部分簡單的模組以及 CommonJS,而我完全希望 ShadowNode 將更完全地支援 Node.js/Npm 模組,能夠讓 JavaScript 開發者能無縫在 Node.js 與 ShadowNode 中切換,儘量少地減少學習的成本!另外,ShadowNode 底層使用純 C 編寫,我們將大部分程式碼交給 C 來實現,JavaScript 僅僅作為膠水層語言!