Posted on 2008-10-18 16:24
sufan 阅读(5720)
评论(3) 编辑 收藏 引用 所属分类:
翻译
(希望能够与大家多交流,一起学习V8。)
原文地址:http://www.codeproject.com/KB/library/Using_V8_Javascript_VM.aspx
本文代码下载:demo
简介
有谁从没好奇过虚拟机是怎样工作的?但是,和自己做一个虚拟机比起来,你若是能使用一个大公司做的虚拟机,并把重点放在提高VM的速度上则更为实际。本文中,我将向你介绍怎样在应用程序开发中使用 Google Chrome 浏览器内置的开源 JavaScript 引擎——V8。
环境
本文提供的代码使用 V8 作为内含的库来执行 JavaScript 代码。你可以到 V8 developer page 上去获取 V8 库的源代码及其他相关信息。你还需要了解C/C++和 JavaScript 知识,以便更加有效的使用V8库。
代码的使用
让我们来看看 demo 中所含内容。它向我们展示了:
怎样使用 V8 的API来执行 JavaScript 程序。
怎样访问脚本中整数和字符串。
怎样创建能够在脚本中被调用的函数。
怎样创建能够在脚本中被调用的C++类。
首先,让我们来了解一下怎样初始化 V8 API,先来看看下面这个在C++中使用V8的例子:
#include <v8.h>
using namespace v8;
int main(int argc, char* argv[])
{
// Create a stack-allocated handle scope.
HandleScope handle_scope;
// Create a new context.
Handle<Context> context = Context::New();
// Enter the created context for compiling and
// running the hello world script.
Context::Scope context_scope(context);
// Create a string containing the JavaScript source code.
Handle<String> source = String::New("'Hello' + ', World!'");
// Compile the source code.
Handle<Script> script = Script::Compile(source);
// Run the script to get the result.
Handle<Value> result = script->Run();
// Convert the result to an ASCII string and print it.
String::AsciiValue ascii(result);
printf("%s\n", *ascii);
return 0;
}
虽然以上的代码并没有向我们解释如何在脚本中控制变量和函数,不过看起来脚本的确开始起作用了……但是我们仍然需要设法了解这方面的知识,以便使用我们自己的函数来控制脚本中的特殊动作。