缠缠绵绵的v8与c++ | 之一
先翻译几篇google的文章再说。
1. Get Started(记得FQ)
这篇文章介绍了一些关于V8的关键知识点,并演示了一个简单的例子,hello world。
内容
适合本文的读者
Hello World
适合本文的读者
本文是为那些想把JavaScript嵌入到C++应用程序中的C++程序猿而作。
Hello World
让我们看看这个Hello World的例程。它把一段JavaScript语句作为一个string类型的变量,让它以JavaScript来运行, 然后将结果打印出来。
#include <v8.h>
using namespace v8;
int main(int argc, char* argv[]) {
// 创建一个新的 Isolate,并且让它成为当前的操作对象。
Isolate* isolate = Isolate::New();
Isolate::Scope isolate_scope(isolate);
// 在栈上创建一个 handle scope(句柄域)
HandleScope handle_scope(isolate);
// 创建一个新的JavaScript的运行环境。
Local<Context> context = Context::New(isolate);
//进入编译和运行hello world的运行环境。
Context::Scope context_scope(context);
// 创建一个包含JavaScript源程序的string。
Local<String> source = String::NewFromUtf8(isolate, "'Hello' + ', World!'");
// 编译这个Javascript源程序。
Local<Script> script = Script::Compile(source);
// 运行。
Local<Value> result = script->Run();
// 将运行结果转换为 UTF8 并输出。
String::Utf8Value utf8(result);
printf("%s\n", *utf8);
return 0;
}
Isolate 是一个拥有自己的堆的VM实例。
local handle 是指向对象的指针。所有的V8对象均通过handles(句柄)来访问, 之所以这样做,与V8的垃圾收集器的工作方式有关。
handle scope 可以被当作装载任意数量的handle的容器。当不再需要这些被创建的handle时,与其一个一个的删除它们,不如直接删除它们所在的 handle scope。这些handle也会随之而被删除。
context 是一个执行环境。这个环境允许那些独立的,无关的JavaScript代码共同运行在同一个V8的实例中。为实现此种功能,必须显式的定义这个执行环境(context)。

浙公网安备 33010602011771号