【问题标题】:How to use V8's built in functions如何使用 V8 的内置函数
【发布时间】:2010-03-12 03:31:05
【问题描述】:

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

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

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

  3. 我可以通过应用程序中嵌入的V8库调用谷歌地图api吗?如何?

【问题讨论】:

    标签: c++ v8 javascript-engine


    【解决方案1】:

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

    【讨论】:

    • 非常感谢。我可以看到 DOM(例如 XMLHttpRequest)是浏览器的内置对象,javascript 可以使用它来执行某些操作,所以显然唯一的方法是导入浏览器的库?
    【解决方案2】:

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

    您需要自己实现其他所有内容,例如加载其他 javascript 文件。 shell.cc 有一些您可能正在寻找的功能。

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

    【讨论】:

      【解决方案3】:

      您可以使用例如 --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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多