`
jiagou
  • 浏览: 2589120 次
文章分类
社区版块
存档分类
最新评论

基于V8 引擎开发(1)

 
阅读更多

csdn lidp http://blog.csdn.net/perfectpdl



本文介绍了一些V8关键概念,同时提供了一个在v8提供的接口上的hello world 例子。

本文介绍的开发模式是采用C++语言,把V8 js引擎嵌入到c++应用程序中。


在 v8介绍一文中 提过js引擎的目的是解析 js代码,编译,执行。

下面的例子中把hell world做为js代码执行并输出结果到屏幕:



int main(int argc, char* argv[]) {

  // Create a string containing the JavaScript source code.
  String source = String::New("'Hello' + ', World'");

  // Compile the source code.
  Script script = Script::Compile(source);
  
  // Run the script to get the result.
  Value result = script->Run();

  // Convert the result to an ASCII string and print it.
  String::AsciiValue ascii(result);
  printf("%s\n", *ascii);
  return 0;
}


为了执行以上代码,还需要添加 句柄(handler),句柄范围(handler scope)以及上下文(context)。

  • 句柄就是一个指向对象的指针,所有v8对象的访问都通过句柄
  • 句柄范围可以被认为是一个句柄的容器,当你不想释放句柄资源时,可以最后通过释放句柄范围来释放所有句柄资源。
  • 上下文是一个执行环境,一个上下文把分离的,无关的js代码集成在一起,作为一个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.
  Persistent<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();
  
  // Dispose the persistent context.
  context.Dispose();

  // Convert the result to an ASCII string and print it.
  String::AsciiValue ascii(result);
  printf("%s\n", *ascii);
  return 0;
}


运行 例子:

1. 下载v8代码,编译 ,参照前文
2. 把上面的代码拷贝到文件 hello_v8.cpp,放到v8源码目录下

3. 编译 hello-v8.cpp , 在linux下面用gcc编译命令如下:
g++ -Iinclude hello_v8.cpp -o hello_world libv8.a -lpthread
4 .上面的libv8.a为 编译v8后生成的静态库,执行 生成的可执行程序:
./hello_world




分享到:
评论

相关推荐

    delphi调用v8引擎.zip

    1. **V8引擎API接口**: Delphi开发者需要理解和掌握V8引擎提供的C++ API,这些接口允许创建、编译和执行JavaScript代码。例如,`v8::Isolate`代表一个独立的执行上下文,`v8::Script`用于存储已编译的脚本,而`v8::...

    delphi 调用google v8 引擎 最新版本

    在IT行业中,Delphi是一种基于Pascal编程语言的集成开发环境(IDE),它以其高效、快速的编译器和丰富的库资源而闻名。Google V8则是一款开源的JavaScript引擎,被广泛应用于Chrome浏览器和Node.js环境中,以提供高...

    Google V8引擎LIB库-谷歌Chrome JavaScript引擎

    1. `v8_base.lib`: 这是V8引擎的基础库,包含V8的基本功能,如执行JavaScript代码、内存管理和垃圾回收。 2. `icui18n.lib` 和 `icuuc.lib`: 这两个库来自于ICU (International Components for Unicode),V8 使用...

    google V8引擎源码工程 (V8 version 3.14.0.1)

    谷歌的V8引擎是一款开源的JavaScript执行环境,它被广泛应用于Chrome浏览器和其他基于Chromium的项目。...同时,这对于那些想要参与V8引擎开发或者构建类似JavaScript运行时环境的人员来说,是非常宝贵的资源。

    配套“编译v8引擎”文章使用 python26

    Node.js是一个基于V8引擎的JavaScript运行时环境,它允许开发者在服务器端使用JavaScript进行编程。Node.js使用V8的强大性能处理I/O密集型任务,通过非阻塞I/O模型和事件驱动架构提高了效率。 五、编译注意事项 - ...

    配套“编译v8引擎”文章使用

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。Node.js利用V8的高性能特性,实现了非阻塞I/O和事件驱动的模型,这使得Node.js非常适合处理大量的并发连接,常...

    Google V8引擎深度认识

    "Google V8引擎深度认识" V8 引擎是 Google 开发的一款高性能的 JavaScript 渲染引擎,于 2008 年 9 月 2 日随着 Chrome 浏览器的发布而发布。V8 引擎的出现对 JavaScript 的执行速度和性能产生了巨大的影响,成为 ...

    adnroid-v8 js引擎

    3. **对象模型**: V8引擎使用基于原型的面向对象模型,支持构造函数、原型链和实例化。 4. **类型推断**: V8引擎通过静态类型分析优化代码,减少运行时类型检查。 5. **WebAssembly支持**: V8引擎不仅支持...

    易语言调用GoogleV8引擎执行JS

    V8 最早被开发用以嵌入到 Google 的开源浏览器 Chrome 中,但是 V8 是一个可以独立的模块,完全可以嵌入您自己的应用,著名的 Node.js( 一个异步的服务器框架,可以在服务端使用 JavaScript 写出高效的网络服务器 ) ...

    Google V8 Javascript引擎源代码

    1. **即时编译(JIT)**: V8引擎使用即时编译技术,将JavaScript代码在运行时转换为优化过的机器码,提高了执行效率。JIT编译使得V8能够针对特定运行环境进行优化,提高性能。 2. **垃圾回收机制(GC)**: V8引擎...

    Google V8引擎 for .Net3.5 / 4.0

    Google V8引擎 for .Net3.5 / 4.0 V8是一个由美国Google开发的开源JavaScript引擎,用于Google Chrome中。[2]Lars Bak是这个项目的组长。[3] V8在运行之前将JavaScript编译成了机器码,而非字节码或是解释执行 它...

    V8Android,在android上使用v8 javascript引擎.zip

    1. **V8引擎的基本概念**:V8引擎是基于Just-In-Time (JIT) 编译技术的,它可以将JavaScript源代码直接编译为机器码,从而实现快速执行。V8还支持ECMAScript规范的新特性,如Promise、async/await、模块系统等。 2....

    goole v8引擎编译集成

    谷歌V8引擎是一款开源的JavaScript运行环境,由Google开发,最初是为Chrome浏览器设计的,但现在已经被广泛应用于其他项目,包括Node.js服务器端环境。V8引擎以其高性能、高效的垃圾回收机制以及对最新JavaScript...

    V8引擎 google

    ### V8引擎与Google的关系及关键技术点 #### V8引擎简介 V8 是由 Google 开发的一款高性能的 JavaScript 引擎,主要用于 Chrome 浏览器和 Node.js 运行环境中。V8 的主要特点在于其将 JavaScript 直接编译为机器码...

    javascript v8执行引擎源码

    V8引擎的设计目标是将JavaScript代码直接编译为机器码,从而实现快速执行。它不仅被用在Chrome浏览器上,还被许多其他项目,如Node.js,采用以提供服务器端的JavaScript运行环境。 1. **即时编译(JIT)技术** V8...

    note.js 基于v8的javascript服务器端

    综上所述,"note.js 基于v8的javascript服务器端"是一个利用V8引擎实现的JavaScript服务器端开发框架,适用于Windows 32位平台,具备高效的非阻塞I/O处理能力,丰富的模块系统,以及广泛的社区支持。通过这个开发包...

    基于Chrome V8引擎的轻量级事件驱动JavaScript运行时源码

    本项目深入解析了基于Chrome V8引擎的Node.js轻量级事件驱动JavaScript运行时源码,涵盖37689个文件,其中JavaScript文件16128个,C/C++文件总计4455个,并融合了多种编程语言如Python、HTML、TypeScript等,以支持...

    V8Javascript脚本引擎源码

    V8引擎的设计目标是提供快速的JavaScript执行速度,它采用了多种优化策略来实现这一目标。首先,V8使用即时编译(JIT,Just-In-Time)技术将JavaScript源代码编译为机器码,以获得接近原生代码的运行速度。V8的JIT...

    V8 JavaScript引擎内部构造 - Google Developer Day 2009

    V8 是由 Google 开发的一款开源的、高性能的 JavaScript 引擎。它最初应用于 Google Chrome 浏览器,并逐渐成为众多现代浏览器和 Node.js 的核心组成部分。V8 的设计理念在于通过一系列的技术革新来显著提升 ...

Global site tag (gtag.js) - Google Analytics