虽不能至,心向往之

—— 巴人也,操C++口音,混迹于京师,勉强度日……《史记·corelito列传》
posts - 8, comments - 15, trackbacks - 0, articles - 0

使用V8——Google Chrome 的 JavaScript 引擎

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;
}


虽然以上的代码并没有向我们解释如何在脚本中控制变量和函数,不过看起来脚本的确开始起作用了……但是我们仍然需要设法了解这方面的知识,以便使用我们自己的函数来控制脚本中的特殊动作。

Feedback

# re: 使用V8——Google Chrome 的 JavaScript 引擎  回复  更多评论   

2008-10-19 01:16 by alonesword
这个代码在 v8 上有吧,只不过是 E 问的

# re: 使用V8——Google Chrome 的 JavaScript 引擎  回复  更多评论   

2008-10-19 16:31 by sufan
已经给出了原文地址~~~可能本文作者使用的也是 V8 网站上的例子~~

# re: 使用V8——Google Chrome 的 JavaScript 引擎  回复  更多评论   

2009-03-24 05:31 by v8use
能告诉我怎么把它编译成动态连接库DLL ?

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理