本来寻思着写一篇"'Hello' + ', World'"是怎么从JS代码编译然后输出的,然而compile过程的复杂性远超我的想象,强上怕会走火入魔,还是老老实实先回家种田,找点咸鱼方法先写着。虽然说是咸鱼方法,但是V8任何一块拿出来都不简单,之前讲的Time模块说实话大概是属于源码里面幼儿园级别的,这次试试难一点的。
V8的源码在本地编译完成后,会提供一个hello-world.cc的sample,里面有新手用户标准的初始化流程,如下。
int main(int argc, char*argv[]) {//Initialize V8.//这个方法在mac不作为
v8::V8::InitializeICUDefaultLocation(argv[0]);//读取指定名称的配置文件 也不用鸟
v8::V8::InitializeExternalStartupData(argv[0]);//生成一个默认的platform对象
std::unique_ptr<:platform> platform =v8::platform::NewDefaultPlatform();//初始化刚才的platform
v8::V8::InitializePlatform(platform.get());//V8的初始化
v8::V8::Initialize();//...
}
前两步不用去管,在入门阶段用不上。
第三步是主要内容,探究生成的默认platform对象(当然也可以选择自己定制一个platform对象),这个类主要负责管理线程池、调用栈、事件队列等一些杂活。
这一篇不会去深入方法一步一步走,里面内容太过于杂乱,跳来跳去的