JS引擎-- Chrome V8 引擎入门
2015-05-15 15:37
330 查看
Note:C++里面要用JS就用V8
link:http://www.cnblogs.com/liuning8023/archive/2012/11/03/2752761.html
https://developers.google.com/v8/intro
介绍
关于V8引擎
V8引擎入门
参考资料
V8是Google开源的、高性能的JavaScript引擎。V8是由C++编写,并用在Google开源浏览器Chrome中。
Google的V8项目旨在帮助那些C++开发者在他们的应用程序中使用V8,以及对V8的设计和性能感兴趣的人。本文及其后的文章将介绍V8,和如何在你的代码中使用V8,并提供一套JavaScriptbenchmarks来测量V8的性能。
V8实现了ECMA-262第5版描述的ECMAScript,可运行在Windows(XP或更高)、MacOSX(10.5或更高)和使用IA-32、x64或ARM处理器的Linux系统。
V8编译和执行JavaScript源代码,处理对象内存分配,对不再使用的对象进行回收。V8的垃圾回收(Google自己说是“能停止世界、新一代、准确的垃圾回收”)是其性能的关键。其他的性能方面,如V8设计元素(V8DesignElements)。
JavaScript是浏览器中最常用的客户端脚本,如用来操作DOM(DocumentObjectModel,文档对象模型)。但是,DOM通常由JavaScript提供,而不是浏览器。V8—GoogleChrome就是这样。但是,V8提供所有的数据类型、操作符、对象和ECMA标准规定的函数。
V8可以使任何C++应用程序向JavaScript代码公开自己的对象和函数。由你决定向JavaScript公开你希望的对象和函数。在这方面,有很多应用程序都这么做,如,AdobeFlash和苹果MacOSX中Dashboard部件和和雅虎部件。
首先,需要下载V8源代码并生成V8。之后,演示V8代码的"HelloWorld"示例。在演示"HelloWorld"示例时,介绍一些关键的V8概念。
HelloWorld示例
运行HelloWorld示例
HelloWorld示例
把一个JavaScript语句作为一个字符串参数,作为JavaScript代码执行,并输出结果。但是下面代码不能执行,因为它还缺少V8必要的部分。
若真正在V8中运行该示例,还需要添加句柄(handles)、作用域(handlescope)和上下文环境(context):
一个句柄是一个指向对象的指针。所有V8对象都是通过句柄访问,这样V8垃圾回收才能起作用。
一个作用域可以看做任意数量句柄的容器。这样,当使用完句柄后,不用单独删除每个,而是简单删除作用域。
一个上下文环境一个执行环境,允许单独的、不相关的JavaScript代码运行在V8单个实例。必须在你要执行的JavaScript代码中显示指定上下文环境。
这些概念会在嵌入式指南中更多描述。
下面代码同上边一样,但包含了句柄、作用域和上下文环境。另外,也包含了命名空间和V8头文件:
运行HelloWorld示例
你可以按如下步骤运行示例:
下载V8源代码,并按指示生成V8。
复制上面的代码,并另存为hello_world.cpp到V8生成的目录。
编译hello_world.cpp,链接到生成期间创建的静态库。例如,在64位Linux,使用GNU编译器:
命令行执行hello_world可执行文件。例如,在Linux,当前目录为V8目录,输入下面命令:
你会看到终端输出Hello,World!
这仅仅是一个简单的例子,你可能想执行更多脚本。
link:http://www.cnblogs.com/liuning8023/archive/2012/11/03/2752761.html
本文内容
介绍关于V8引擎
V8引擎入门
参考资料
介绍
V8是Google开源的、高性能的JavaScript引擎。V8是由C++编写,并用在Google开源浏览器Chrome中。Google的V8项目旨在帮助那些C++开发者在他们的应用程序中使用V8,以及对V8的设计和性能感兴趣的人。本文及其后的文章将介绍V8,和如何在你的代码中使用V8,并提供一套JavaScriptbenchmarks来测量V8的性能。
关于V8引擎
V8实现了ECMA-262第5版描述的ECMAScript,可运行在Windows(XP或更高)、MacOSX(10.5或更高)和使用IA-32、x64或ARM处理器的Linux系统。V8编译和执行JavaScript源代码,处理对象内存分配,对不再使用的对象进行回收。V8的垃圾回收(Google自己说是“能停止世界、新一代、准确的垃圾回收”)是其性能的关键。其他的性能方面,如V8设计元素(V8DesignElements)。
JavaScript是浏览器中最常用的客户端脚本,如用来操作DOM(DocumentObjectModel,文档对象模型)。但是,DOM通常由JavaScript提供,而不是浏览器。V8—GoogleChrome就是这样。但是,V8提供所有的数据类型、操作符、对象和ECMA标准规定的函数。
V8可以使任何C++应用程序向JavaScript代码公开自己的对象和函数。由你决定向JavaScript公开你希望的对象和函数。在这方面,有很多应用程序都这么做,如,AdobeFlash和苹果MacOSX中Dashboard部件和和雅虎部件。
V8引擎入门
首先,需要下载V8源代码并生成V8。之后,演示V8代码的"HelloWorld"示例。在演示"HelloWorld"示例时,介绍一些关键的V8概念。HelloWorld示例
运行HelloWorld示例
HelloWorld示例
把一个JavaScript语句作为一个字符串参数,作为JavaScript代码执行,并输出结果。但是下面代码不能执行,因为它还缺少V8必要的部分。
intmain(intargc,char*argv[]){
//CreateastringcontainingtheJavaScriptsourcecode.
Stringsource=String::New("'Hello'+',World'");
//Compilethesourcecode.
Scriptscript=Script::Compile(source);
//Runthescripttogettheresult.
Valueresult=script->Run();
//ConverttheresulttoanASCIIstringandprintit.
String::AsciiValueascii(result);
printf("%s\n",*ascii);
return0;
}
若真正在V8中运行该示例,还需要添加句柄(handles)、作用域(handlescope)和上下文环境(context):
一个句柄是一个指向对象的指针。所有V8对象都是通过句柄访问,这样V8垃圾回收才能起作用。
一个作用域可以看做任意数量句柄的容器。这样,当使用完句柄后,不用单独删除每个,而是简单删除作用域。
一个上下文环境一个执行环境,允许单独的、不相关的JavaScript代码运行在V8单个实例。必须在你要执行的JavaScript代码中显示指定上下文环境。
这些概念会在
下面代码同上边一样,但包含了句柄、作用域和上下文环境。另外,也包含了命名空间和V8头文件:
#include<v8.h>
usingnamespacev8;
intmain(intargc,char*argv[]){
//Createastack-allocatedhandlescope.
HandleScopehandle_scope;
//Createanewcontext.
Persistent<Context>context=Context::New();
//Enterthecreatedcontextforcompilingand
//runningthehelloworldscript.
Context::Scopecontext_scope(context);
//CreateastringcontainingtheJavaScriptsourcecode.
Handle<String>source=String::New("'Hello'+',World!'");
//Compilethesourcecode.
Handle<Script>script=Script::Compile(source);
//Runthescripttogettheresult.
Handle<Value>result=script->Run();
//Disposethepersistentcontext.
context.Dispose();
//ConverttheresulttoanASCIIstringandprintit.
String::AsciiValueascii(result);
printf("%s\n",*ascii);
return0;
}
运行HelloWorld示例
你可以按如下步骤运行示例:
下载V8源代码,并按指示生成V8。
复制上面的代码,并另存为hello_world.cpp到V8生成的目录。
编译hello_world.cpp,链接到生成期间创建的静态库。例如,在64位Linux,使用GNU编译器:
g++-Iincludehello_world.cc-ohello_worldout/x64.release/obj.target/tools/gyp/libv8_{base,snapshot}.a-lpthread
命令行执行hello_world可执行文件。例如,在Linux,当前目录为V8目录,输入下面命令:
./hello_world
你会看到终端输出Hello,World!
这仅仅是一个简单的例子,你可能想执行更多脚本。
相关文章推荐
- JavaScript 引擎——Chrome V8 引擎入门
- 转载 chrome V8 编译实录 与 windows下 V8 JS引擎 编译 2016-06-30
- HTML5游戏开发引擎Pixi.js新手入门讲解
- node.js chrome v8简介
- 用NAN简化Google V8 JS引擎的扩展
- 用NAN简化Google V8 JS引擎的扩展
- 如何在应用程序中集成V8 JS引擎
- Android上V8 JS引擎
- 在Android上使用Google V8 JS 引擎
- Chrome v8引擎 对多行注释,做词法分析时的bug.
- Ubuntu Linux 下 Google Chrome V8引擎的编译实战
- 在Android上使用Google V8 JS 引擎
- V8 js引擎的一个简单介绍
- dot.js-js模板引擎使用,教程,入门
- V8脚本引擎使用入门
- 如何为Titanium构造最新版本的JS V8引擎[How To]
- 判断js引擎是javascriptCore或者v8
- 使用 Node.js\/D8 分析 javascript 如何被 V8 引擎优化的
- 使用 Node.js\/D8 分析 javascript 如何被 V8 引擎优化的
- Node.js模板引擎: Jade入门