如何使用V8的内置功能

时间:2010-03-12 03:31:06

标签: c++ v8 javascript-engine

我是javascript和V8的新手。根据Google的Embedder指南,我在context section中看到了一些关于内置实用程序javascript函数的内容。我还在下载的源代码中找到了一些.js文件(例如math.js),所以我尝试编写一个简单的程序来调用这些文件中的函数,但是我失败了。

  1. Persistent<Context> context = Context::New()创建的上下文是否具有任何内置的js函数?我该如何访问它们?

  2. 有没有办法首先将现有的js文件作为库导入(类似于HTML页面中的src =“xxx”type =“text / javascript”),然后运行我自己的执行脚本?

  3. 我可以通过app中的嵌入式V8库调用google maps api吗?怎么样?

3 个答案:

答案 0 :(得分:1)

3. Google地图需要一个完整的浏览器DOM(或者至少是我猜的XMLHttpRequest),你不能只使用Javascript库。

答案 1 :(得分:0)

我认为v8免费提供Math。*函数。

你需要自己实现其他一切,比如加载其他javascript文件。 shell.cc具有您可能正在寻找的一些功能。

至于地图API,我相信你需要一个完整的渲染引擎/ javascript引擎组合。你可能最好看看Webkit或者你可以用来嵌入Webkit的东西,我真的不能说。

答案 2 :(得分:0)

您可以使用--allow_natives_syntax或--expose_natives_as选项。
以下是在src / math.js中随机选取MathLog的示例:

首先用

编译一个shell
$ scons d8 -j8

然后使用--expose_natives_as:

$ ./d8 --expose_natives_as nat
V8 version 3.12.7 (candidate) [console: dumb]
d8> nat.MathLog(100)
4.605170185988092

或使用带有'%'前缀的--allow_natives_syntax:

$ ./d8 --allow_natives_syntax
V8 version 3.12.7 (candidate) [console: dumb]
d8> %MathLog(100)
4.605170185988092