以hello-world为例。 我有几个问题:
v8::Isolate
做什么?它是否创建了一个新线程v8::Isolate::Scope
做什么?v8::HandleScope
做什么?v8::Local<v8::Context>
做什么?v8::Script::Compile
做什么?它是否直接将js代码编译为机器代码?感谢您的帮助!
答案 0 :(得分:1)
请参阅official wiki:
中更详细地讨论了这些概念
- 隔离是具有自己的堆的VM实例。
- 本地句柄是指向对象的指针。使用句柄访问所有V8对象,由于V8垃圾收集器的工作方式,它们是必需的。
- 句柄范围可以被认为是任意数量句柄的容器。当您完成手柄操作后,不必单独删除每个手柄,只需删除其范围即可。
- 上下文是一种执行环境,允许单独的,不相关的JavaScript代码在V8的单个实例中运行。您必须明确指定要在其中运行任何JavaScript代码的上下文。
如果您已阅读现有文档,如果仍有任何疑问,请提出更具体的问题。
关于(5):在当前版本的V8中,v8::Script::Compile
编译V8解释器的字节码。在早期版本中,它编译了未经优化的机器代码。区别在于您不必担心的内部实施细节: - )