我們團(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)類型語(yǔ)言(”1024”是字符串類型而不是整數(shù)類型),而JavaScript卻總是默認(rèn)的幫我們做一些類型轉(zhuǎn)換。
JavaScript的基本類型包括String,Number,Boolean,null,undefined,V8使用類繼承的方式來(lái)定義這類型,這些類型都繼承了Primitive類,而Primitive繼承了Value,v8也支持整型(包括Int32和Uint32),而所有的類型定義都可以從V8類型文檔中看到,除了基本的類型,還有Object,Array,Map等類型的定義。
基本類型的繼承關(guān)系如下圖: