缠缠绵绵的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)。

 

posted @ 2014-09-23 16:04  boansmith  阅读(266)  评论(0)    收藏  举报