我很喜欢用Node.js,但是涉及到计算密集型的场景,Node.js就不太擅长了。在这种情况下,C++是一个不错的选择。幸运的是,Node.js官方提供了C/C++Addons的机制,这样我们就可以使用V8API来结合Node.js和C++。虽然Node.js官网有很多关于如何使用这些API的文档,但是在JavaScript和C++之间传递数据是一件很麻烦的事情,而且C++是强类型语言(“1024”是字符串类型而不是Integer类型),而JavaScript总是默认为我们做一些类型转换。JavaScript的基本类型包括String、Number、Boolean、null和undefined。V8使用类继承来定义这种类型。这些类型继承了Primitive类,而Primitive又继承了Value。V8也支持整数类型(包括Int32和Uint32),所有的类型定义都可以从V8类型文档中看到,除了基本类型外,还有Object、Array、Map等类型。基本类型的继承关系如下:在V8中,所有的JavaScript值都放在Local对象中,通过它指定了JavaScript运行时的内存单元。以下段落定义了一个Number类型的值。Test函数中声明的isolate变量代表V8虚拟机中的堆内存。创建新变量时需要使用它。下一行代码通过isolate声明了一个Number类型的变量。#include#includeusingnamespacev8;voidTest(constv8::FunctionCallbackInfo&args){Isolate*isolate=args.GetIsolate();//声明变量Localretval=v8::Number::New(isolate,1000);}voidinit(Local