首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何运行JavaScript文件- V8

如何运行JavaScript文件- V8
EN

Stack Overflow用户
提问于 2019-06-22 06:52:00
回答 1查看 2.2K关注 0票数 2

我已经将v8嵌入到c++应用程序中。参考https://chromium.googlesource.com/v8/v8/+/master/samples/hello-world.cc,我能够运行javascript。测试并运行良好。

我访问我的c++应用程序的链接,下载html数据,下载javascript。一些嵌入脚本在html调用函数中的外部脚本文件。如何确保外部脚本可供嵌入式脚本使用?

下载的JavaScript文件(一个或多个)可能较大。在这种情况下,如何使用JavaScript执行v8中的HTML?在JavaScript中运行v8的代码如下,

代码语言:javascript
运行
复制
  // Create a string containing the JavaScript source code.
  v8::Local<v8::String> source =
      v8::String::NewFromUtf8(isolate, "'Hello' + ', World!'",
                              v8::NewStringType::kNormal)
          .ToLocalChecked();
  // Compile the source code.
  v8::Local<v8::Script> script =
      v8::Script::Compile(context, source).ToLocalChecked();
  // Run the script to get the result.
  v8::Local<v8::Value> result = script->Run(context).ToLocalChecked();

假设下载的javascript为200 to,我如何才能将如此大的缓冲区提供给v8::Script::Compile。当我有多个文件时,如何才能将它们提供给v8呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 11:55:46

如何确保外部脚本可供嵌入式脚本使用?

首先加载外部脚本。

如何使用JavaScript执行HTML?

你是说DOM?windowdocument等等吗?DOM不是ECMAScript的一部分,所以V8对它一无所知;它是由嵌入式程序(通常是Chrome)提供的。在您自己的嵌入中,您需要使用V8的API自己提供所有这些对象。不用说,这是一项巨大的工作。如果您想要的是一种呈现网站的方法,那么我建议您为此使用一些现有的组件/库,例如,或者您最喜欢的GUI工具包的WebView (或它的名称)。

假设下载的JavaScript为200 to,我如何才能将如此大的缓冲区提供给v8::Script::Compile?

就像向V8提供一个小脚本一样:将其放入v8::Local<v8::String>中,然后调用v8::Script::Compilev8::Script::Run

当我有多个文件时,如何才能将它们提供给v8呢?

重复调用v8::Script::Compilev8::Script::Run,可能使用循环。有关示例,请参见V8的壳样,特别是函数RunMain

当我在HTTP数据包(块)中接收到部分JavaScript时,可以将部分JavaScript传递给V8吗?

是的,V8有一个脚本流接口。请参阅v8::ScriptCompiler::ExternalSourceStream的API文档。关于如何使用它的例子,您可以学习测试。对于200 is大小的脚本来说,流可能值得,也可能不值得;它绝对不是必需的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56713286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档