我們團(tuán)隊(duì)非常喜歡Node.js,但是當(dāng)涉及到計(jì)算密集型的場(chǎng)景時(shí)Node.js就不能夠很好地勝任了。而在這樣的情況下C++是一個(gè)很好的選擇,非常幸運(yùn)Node.js官方提供了C/C++Addons的機(jī)制讓我們能夠使用V8API把Node.js和C++結(jié)合起來(lái)。
雖然在Node.js官方網(wǎng)站有很多的關(guān)于怎么使用這些API的文檔,但是在JavaScript和C++之間傳遞數(shù)據(jù)是一件非常麻煩的事情,C++是強(qiáng)類(lèi)型語(yǔ)言(”1024”是字符串類(lèi)型而不是整數(shù)類(lèi)型),而JavaScript卻總是默認(rèn)的幫我們做一些類(lèi)型轉(zhuǎn)換。
JavaScript的基本類(lèi)型包括String,Number,Boolean,null,undefined,V8使用類(lèi)繼承的方式來(lái)定義這類(lèi)型,這些類(lèi)型都繼承了Primitive類(lèi),而Primitive繼承了Value,v8也支持整型(包括Int32和Uint32),而所有的類(lèi)型定義都可以從V8類(lèi)型文檔中看到,除了基本的類(lèi)型,還有Object,Array,Map等類(lèi)型的定義。
基本類(lèi)型的繼承關(guān)系如下圖: