使用 V8 将 JavaScript 编译为本机代码

发布于 2024-09-03 23:41:49 字数 84 浏览 11 评论 0 原文

使用 Google 的 V8 引擎,真的有可能将 JavaScript 编译为本机代码,将其保存为二进制文件,并在任何机器上通过我的软件环境随时执行它吗?

Is it really possible, with Google's V8 Engine, to compile JavaScript into Native Code, save it as a binary file, and execute it whenever I want through my software envorinment, on any machine?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

春夜浅 2024-09-10 23:41:49

您可以使用V8快照功能来预编译代码。这仍然意味着您必须运行完整版本的 V8 才能加载快照(即,您没有获得独立的本机代码,它需要在 V8 VM 内运行),因此您节省的只是编译时间。
此外,快照代码的质量不一定与 JIT 代码一样好,因为 JIT 代码可以使用例如 SSE2/SSE3(如果可用),而快照无法假设。

You can use the V8 snapshot functionality to precompile the code. This still means that you have to have a full version of V8 running to load the snapshot (i.e., you don't get stand-alone native code, it needs to run inside the V8 VM), so all you save is the compilation time.
Also, the quality of snapshot code isn't necessarily as good as JIT'ed code because JIT code can use, e.g., SSE2/SSE3 if it's available, which snapshots can't assume.

百变从容 2024-09-10 23:41:49

据我所知,V8纯粹是一个 just-in-time 编译器,并且没有提前选项。

正如我链接的文章中所讨论的,JIT 可以实现更好、更灵活的优化。

As far as I know, V8 is purely a just-in-time compiler, and does not have an ahead-of-time option.

As discussed at the articles I linked, JITs allow better, more flexible optimizations.

情徒 2024-09-10 23:41:49

相反,可以使用 .NET JavaScript/JScript 编译器创建 .NET exe,然后使用 Mono 提前编译器

Instead, it might be possible to use a .NET JavaScript/JScript compiler to create a .NET exe, then convert the .NET exe to a native .exe using the Mono ahead-of-time compiler.

天赋异禀 2024-09-10 23:41:49

最接近实现目标的方法是创建一个自动执行的 Javascript 字节码包装器。

执行此操作的项目是 pkg

它以某种方式创建一个独立的二进制文件Javascript 的可执行文件,包括模块依赖项和资产文件,并生成一个独立的可执行文件。

安装和使用很简单:

$ npm install -g pkg
$ pkg index.js -o my-program
$ ./my-program

我的理解是这个二进制文件包含nodejs字节码。看来你还可以交叉编译。

注意:我尝试过 nccnexe 也有,但我还没有发现它们那么有用。 ncc 只是创建一个独立的 Javascript 文件,而 nexe 在我尝试使用它时遇到了 Python 错误。

The closest you might get to acheiving your goal is to create a self-executing Javascript bytecode wrapper.

A project that does this is pkg

It somehow creates a self-contained binary executable from Javascript, including module dependencies and asset files and produces a self-contained executable.

Installation and use is easy:

$ npm install -g pkg
$ pkg index.js -o my-program
$ ./my-program

My understanding is that this binary contains nodejs bytecode. It also appears that you can cross-compile.

Note: I've tried ncc and nexe also, but I haven't found them to be as useful. ncc just creates a self-contained Javascript file and nexe encountered a Python error when I tried to use it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文