欢迎来到天天文库
浏览记录
ID:17421742
大小:1.25 MB
页数:18页
时间:2018-08-31
《google javascript脚本引擎v8学习笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GoogleJavascript脚本引擎v8学习笔记目录一、Googlev8整体印象21.1Googlev8是什么,能做什么?21.2Googlev8的获取及编译21.2.1获取源码21.2.2编译类库及示例3二、Googlev8入门32.1v8的基本概念32.2从HelloWorld开始52.3在C++中访问Javascript的变量及函数52.4在Javascript中访问C++全局函数及变量92.5在C++中“声明”“Javascript类”,供Javascript实例化152.6封装完整的C++类到J
2、avascript中,供Javascript实例化16三、Googlev8的开源应用163.1Node.js163.2v8cgi17四、参考资料17五、本文源码18一、Googlev8整体印象1.1Googlev8是什么,能做什么?v8是一款Javascript脚本引擎,它开放源代码,由Google丹麦开发,是GoogleChrome的一部分。和其它脚本语言(php,lua,python等)一样,Javascript也可以内嵌于应用程序,和编译性语言(c/c++等)交互。由于v8是用C++写的,所以在C++中
3、使用javascript显得更加的自然。通过在应用程序中引入脚本解析器,将一些业务逻辑交由脚本实现,可以使得系统更加灵活。C/C++的高效,Javascript的灵巧多变,使得我们的应用程序可以兼顾性能和效率。说得再具体直白一点,就是我们可以通过编写javascript脚本来操作C++提供的类,可以编写javascript函数供C++调用。像下面这样写javascript一定非常爽吧?var socket = new Socket(Socket.PF_INET, Socket.SOCK_STREAM, Soc
4、ket.IPPROTO_TCP);socket.setOption(Socket.SO_REUSEADDR, true);var conn = socket.connect("www.cppblog.com", 80);if (conn){ var httpHeader = "GET/pansunyou HTTP/1.1rHost:www.cppblog.comrr"; socket.send(httpHeader); var responseText = socket.rece
5、ive(12000); printf("responseText="+responseText+"");}socket.close();至于其性能,好吧,算我迷信,Google出品一定差不到哪里去。再是我也未完全明白它的原理,就不抄网上的文字了,可以本文的参考资料看到相关的介绍文档。1.2Googlev8的获取及编译1.2.1获取源码Googlev8以源码的形式提供,其开源项目地址为:http://code.google.com/p/v8/在linux下,可以使用以下命令获取其源码:svnche
6、ckouthttp://v8.googlecode.com/svn/trunk/v8在windows下,可以TortoiseSVN导出源码:1.2.2编译类库及示例GoogleV8的编译需要使用Scons(大概类似于Makefile或者CMake之类),而Scons需要使用Python2.x,所以需要先安装这两玩意儿。记得python一定要是2.x系列的,否则灰常灰常的郁闷。http://www.python.org/http://www.scons.org/Windows平台,进入命令后先运行,以初始化vc
7、编译环境。cmd/k""C:ProgramFilesMicrosoftVisualStudio9.0VCvcvarsall.bat""x86进入v8源码目录,执行Scons--help可查看编译选项。因为我是用来学习的,所以我编译debug版本,并且选择打印尽可能多的消息。在windows下,尽量选择编译为动态库吧,在为静态的v8.lib有160MB之巨,一个helloworld程序都要链接个半天。我的编译选项:sconsmode=debugverbose=onlibrary=sharedmsvcrt
8、=static编译结果为同目录下的v8_g.lib和v8_g.dll,release编译时无_g后缀。使用时非常简单,只需要在vc工程中加入v8的include目录,链接加入v8_g.lib即可。二、Googlev8入门2.1v8的基本概念在使用v8引擎之前,先来了解一下几个基本概念:句柄(handle),作用域(scope),上下文环境(可以简单地理解为运行环境)。2.1.1句柄(Handle)从
此文档下载收益归作者所有