Javascript 在没有联网的情况下编译V8等
我想将V8嵌入到我正在进行的项目中。这个项目根本不使用网络——事实上,出于安全原因,它避免了网络连接(我不想打开一个我没有准备好的跨站点脚本潘多拉盒子)。不管怎样,我只想要javascript 据我所知,V8只是一个简单的javascript编译器和VM,这很好——但它需要使用各种第三方库进行编译,才能适应添加的功能。我想,网络就是其中之一。为了能够构建使用V8的应用程序,您必须链接到Winsock 我希望能够从引擎中剥离这些额外的库,并从头开始向我自己的内部代码添加绑定(除了字符串之类的东西),但我找不到帮助我这样做的指南或文档。V8在作为javascript引擎的基础上增加了什么功能,我应该知道,我如何删除它Javascript 在没有联网的情况下编译V8等,javascript,c++,v8,Javascript,C++,V8,我想将V8嵌入到我正在进行的项目中。这个项目根本不使用网络——事实上,出于安全原因,它避免了网络连接(我不想打开一个我没有准备好的跨站点脚本潘多拉盒子)。不管怎样,我只想要javascript 据我所知,V8只是一个简单的javascript编译器和VM,这很好——但它需要使用各种第三方库进行编译,才能适应添加的功能。我想,网络就是其中之一。为了能够构建使用V8的应用程序,您必须链接到Winsock 我希望能够从引擎中剥离这些额外的库,并从头开始向我自己的内部代码添加绑定(除了字符串之类的东西)
编辑:我还注意到包含了URI,这对于我正在做的事情并不是特别有用。URI函数没有被优化,因为在可执行文件中嵌入了一个标准的排序库,我也希望删除这些函数(以及任何其他与XML/Http相关的javascript函数)。网络。目前,V8需要为其调试器代理建立网络,可以在不使用它的情况下使用引擎,但您需要修改源代码
src/platform/socket.h
将操作系统的NativeHandle typedef(如V8\u OS\u WIN
)替换为:
将kInvalidNativeHandle
const值替换为-1
删除操作系统包含文件src/platform/socket.cc
用存根替换所有Socket
类方法的主体,例如:
bool Socket::Bind(int port) {
assert(!"Socket usage.");
return true;
}
bool Socket::Listen(int backlog) {
assert(!"Socket usage.");
return true;
}
...
从该文件中删除其他特定于操作系统的功能,等等
这将删除所有V8网络依赖项i18nsupport=off
构建不带ICU库的V8。
在这种情况下,您需要初始化内置ICU:
v8::V8::InitializeICU();
希望这有帮助。我自己在非常受限的环境中使用V8,没有网络/文件系统等。如果我忘记了其他依赖项,或者您有任何问题,请告诉我。那么,您会问在这种情况下“etc”是什么?这是你的问题吗?@KarolyHorvath整个问题都在最后一句话里。特别是“我如何删除它?”查看当前的选项,它似乎不是一个选项,当然也没有经过测试。当然,你可以自己进行回购交易。@nmd系统我不确定你是否可以;首先,如果没有URI支持,“require”将如何工作?
v8::V8::InitializeICU();