转自http://blog.csdn.net/feiyinzilgd/article/details/8248448

上一章讲到了V8的编译和安装,这一章开始从一个demo着手。

这里选用了官方文档的一个非常简洁的HelloWorld.cc,代码如下:

  1. #include <v8.h>
  2. using namespace v8;
  3. int main(int argc, char* argv[]) {
  4. // Create a stack-allocated handle scope.
  5. HandleScope handle_scope;
  6. // Create a new context.
  7. Persistent<Context> context = Context::New();
  8. // Enter the created context for compiling and
  9. // running the hello world script.
  10. Context::Scope context_scope(context);
  11. // Create a string containing the JavaScript source code.
  12. Handle<String> source = String::New("'Hello' + ', World!'");
  13. // Compile the source code.
  14. Handle<Script> script = Script::Compile(source);
  15. // Run the script to get the result.
  16. Handle<Value> result = script->Run();
  17. // Dispose the persistent context.
  18. context.Dispose();
  19. // Convert the result to an ASCII string and print it.
  20. String::AsciiValue ascii(result);
  21. printf("%s\n", *ascii);
  22. return 0;
  23. }

我的目录结构如下:

编译运行:

  1. g++ -I../include helloworld.cc  -o helloworld -lpthread -lv8
  1. ./helloworld

就可以在屏幕上看到输出结果了。

看到demo上有一些Context,Scope,Value等等,先不要慌张,其实就是V8的一些基本 数据类型,这些在后面会逐个一一讲到。

  1. Handle<String> source = String::New("'Hello' + ', World!'");

看到这句话,其实就是在加载一个js文件了。只不过这个js文件内容为:

  1. 'Hello' + ', World!'

那么这里,source就已经是加载过的js文件字符串内容了,接下来V8需要对js进行编译解释。

  1. Handle<Script> script = Script::Compile(source);
  2. Handle<Value> result = script->Run();

最后就是JS的执行了。这里虽然只有简单的几个语句,但是V8对于JS的编译和运行做了很多很复杂的操作。关于V8是如何编译和运行JS的,在后面章节将做详细的分析。

版权申明:
转载文章请注明原文出处,任何用于商业目的,请联系本人:hyman_tan@126.com

Google V8编程详解(二)HelloWorld的更多相关文章

  1. Google V8编程详解附录

    Google V8编程详工具函数 头文件:utils.h #ifndef UTILS_H_ #define UTILS_H_ #include "v8.h" #include &l ...

  2. Google V8编程详解(五)JS调用C++

    http://blog.csdn.net/feiyinzilgd/article/details/8453230 最近由于忙着解决个人单身的问题,时隔这么久才更新第五章. 上一章主要讲了Google ...

  3. Google V8编程详解(三)Handle & HandleScope

    上一章简单的演示了一个Helloworld Demo.里面涉及到了V8的一些基本类型和概念,本章将围绕这个Demo对V8的基本类型和相关概念进行讲解. 这里还是先把Demo贴出来便于后面分析: #in ...

  4. Google V8编程详解(四)Context

    http://blog.csdn.net/feiyinzilgd/article/details/8266780 上一章,比较略提了下V8的Context.本章将详细的讲解下Context的概念以及用 ...

  5. Google V8编程详解(序)Cloud App

    此系列文章转载于此http://blog.csdn.net/feiyinzilgd/article/details/8247723          应用程序发展到今天,应用程序的概念也在不断地发生着 ...

  6. Google V8编程详解(一)V8的编译安装(Ubuntu)

    V8的编译比较简单,需要同时安装git和svn. 下载V8源码: git clone git://github.com/v8/v8.git v8 && cd v8 切换到最新版本: g ...

  7. Linux 网络编程详解二(socket创建流程、多进程版)

    netstat -na | grep " --查看TCP/IP协议连接状态 //socket编程提高版--服务器 #include <stdio.h> #include < ...

  8. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

    原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日 ...

  9. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

随机推荐

  1. JAVA NIO简介-- Buffer、Channel、Charset 、直接缓冲区、分散和聚集、文件锁

    IO  是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. Java标准io回顾 在Java1.4之前的I/O系统中,提供 ...

  2. PLSQL不好用,提示ora-12514 错误解决方法

    我的PLSQL不好用,提示ora-12514 错误时 我分两步干的: 1:用户名,密码,不写,提示错误后,cancel登陆 tools->preference左侧选->connection ...

  3. js产生随机数函数

    函数: //产生随机数函数 function RndNum(n){ var rnd=""; for(var i=0;i<n;i++) rnd+=Math.floor(Math ...

  4. C#位操作(转)

    在C#中可以对整型运算对象按位进行逻辑运算.按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位.C#支持的位逻辑运算符如表2.9所示. 算符号 意义 ...

  5. maven添加仓库地址

    mvn install时,好多包从mvn中央库下载不下来,搜索到一个maven库地址:http://conjars.org/repo/,将其添加到maven仓库中 编辑 conf/setting.xm ...

  6. C++模板机制总结

    模板是C++中非常重要的组成部分,之前自己对这块领域一直不太熟悉.最近趁着有时间学习了一下,特此总结. 首先是函数模板,它的定义方式如例子所示: template <typename T> ...

  7. PSP(11.16~11.23)

    18号 类别c 内容c 开始时间s 结束e 中断I 净时间T 看书 构建之法 9:00 10:00 0 60m 看书 查资料 10:00 11:15 5 70m 个人 写博客 13:30 14:55 ...

  8. windows下CMake使用图文手册 Part 3

    例子3: 构建动态库(.dll) 静态库(.lib) 采用和例子2一样的文件,但删除了main.cpp E:.               │  CMakeLists.txt │            ...

  9. notepad++与vivado关联

    notepad++与vivado关联 打开vivado软件,选择菜单栏“Tools——>Options…”,在弹出的对话框中,选择General选项卡,如图1所示. 图1  选择General选 ...

  10. 关于MariaDB5.5不是有效的Win32 应用程序

    操作系统:Windows XP sp3 数据库:MariaDB 5.5.49 问题原因: 使用文本编辑器打开mysqld.pdb文件. 在13行1012列,会发现如下信息: 这说明v5.5.49是使用 ...