Javascript 如何在today';中包含另一个js文件;s v8?
我找到了一个旧的anwser和更高版本的更新,但是我很难将这段代码调整到最新(2020)的V8版本 我遇到了很多困难:Javascript 如何在today';中包含另一个js文件;s v8?,javascript,v8,Javascript,V8,我找到了一个旧的anwser和更高版本的更新,但是我很难将这段代码调整到最新(2020)的V8版本 我遇到了很多困难: String::New被删除,现在一个String::NewFromUtf8Literal需要一个隔离*隔离,我不知道如何传递到函数Include,我是否应该在常量参数和参数之前添加这个 Script::Compile现在将上下文对象作为参数 我不知道最后两行代码放在哪里 Handle<ObjectTemplate> global = ObjectTemplate:
String::New
被删除,现在一个String::NewFromUtf8Literal
需要一个隔离*隔离
,我不知道如何传递到函数Include
,我是否应该在常量参数和参数之前添加这个
Script::Compile
现在将上下文
对象作为参数Handle<ObjectTemplate> global = ObjectTemplate::New();
global->Set(String::New("include"), FunctionTemplate::New(Include));
String::NewFromUtf8Literal
有一些错误
samples/import.cc:34:110: Error:‘static v8::Local<v8::String> v8::String::NewFromUtf8Literal(v8::Isolate*, const char*, v8::NewStringType, int)’ is private within this context
34 | Handle<String> source = String::NewFromUtf8Literal(args.GetIsolate(), buff, v8::NewStringType::kNormal, len);
|
samples/import.cc:34:110:Error:“static v8::Local v8::String::NewFromUtf8Literal(v8::Isolate*,const char*,v8::NewStringType,int)”在此上下文中是私有的
34 | Handle source=String::NewFromUtf8Literal(args.getisolation(),buff,v8::NewStringType::kNormal,len);
|
const Arguments&args
之前添加它吗
不,您不能修改将从JS调用的函数的签名,但您不需要:FunctionCallbackInfo
(它是参数的替代物)有一个GetIsolate()
方法
Script::Compile
现在将上下文
对象作为参数
既然你对此有疑问,我猜你只是在使用一个单一的上下文。只要将它存储在一个v8::Persistent
中,并在需要时从它创建一个v8::Local
。(目前,您还可以使用不推荐使用的隔离::GetCurrentContext()
,但对于新编写的代码,我建议您不要这样做,因为在将来必须迁移时,您只会为自己创建更多的工作。)
我不知道最后两行代码放在哪里
Handle<ObjectTemplate> global = ObjectTemplate::New();
global->Set(String::New("include"), FunctionTemplate::New(Include));
无论您在哪里设置全局对象,都在应用程序启动序列的某个位置
所有这些问题(以及更多问题)都可以通过研究V8项目维护的“shell”示例应用程序来回答:。
特别是,它的Load
函数可以实现您想要的功能。Hi@jmrk,我又试了一次,现在我还有两个错误。你能看到我的更新吗?(1)全局上下文。重置(隔离、本地上下文)
应该可以工作。(2) 使用公共版本的NewFromUtf8Literal
,它只有3个参数。