11

我知道 google 的 v8 将 javascript 编译为本机(如果我理解正确,则为二进制)代码。
有没有办法获取输出并将其转换为 exe?

4

4 回答 4

9

我不认为您可以使用 V8 直接将一段 JavaScript 转换为可执行文件,但您可以制作一个将 V8 引擎与 JavaScript 捆绑在一起并作为独立运行的应用程序。

您可以在其项目页面上找到有关 V8 的所有信息。

另请注意,JavaScript 不能完全编译,因为它是一种动态语言。使用 V8,它是 JIT 编译的(例如 .NET。)尽管如此(例如 .NET)仍然可以将其转换为独立的可执行文件。

如果您想开发使用 HTML 进行渲染的独立应用程序,您也可以看看Adob​​e Air

于 2009-07-20T08:42:46.590 回答
6

Javascript 不能只编译一次。该语言具有非常广泛使用的eval 。(例如 JSON)您需要携带 JIT 和整个运行时。

这里的 JIT 只是一种优化,而不是摆脱编译器/解释器的方法。

于 2009-07-20T08:42:47.820 回答
3

Node.js嵌入了 V8。这可能是一个值得学习的好例子。

于 2009-09-10T18:01:55.557 回答
3

已经有一些尝试将 js 变成原生代码,它不是可以通过任何方式用于生产的东西,更多的是学术兴趣。用于 java 的 Rhino 解释器可以选择将 js 转换为 (java) 字节码,因此一种方法是转换为字节码,然后使用 GCJ 从字节码转换为本机。有一些关于 Rhino 和 GCJ 的讨论,但我不知道是否有人曾经尝试过。https://groups.google.com/forum/#!msg/netscape.public.mozilla.jseng/c3tqyLZ19fw/8V4HeuMtIXUJ

另一种方法是使用 Python,特别是 Py-Py,它本身是用 Python 的一个非标准子集编写的,称为 rPython。rPython 不适合人类使用,但它的好处是可以编译为本机。一个有趣(虽然古怪)的实验是将 Javascript 编译为 Python,然后在某些情况下,Python 恰好作为 rPython 有效,并且可以使用 rPython 编译器编译为本机。

http://mozakai.blogspot.com/2010/07/experiments-with-static-javascript-as.html

如果 .exe 文件真的很重要,我会将 V8 与您的应用程序捆绑在一起,因为即使您可以将 js 编译为本机,如果您使用任何 eval() 或类似文件,您仍然需要一个完整的解释器。只要您的用户不介意 8MB exe 或 8MB V8.dll 文件,编写一个将所有内容捆绑到 .exe 文件中的工具并不难。

作为最后的想法,Big G 已经开始允许基于 chrome 的“原生”应用程序(谷歌:“chrome packaged apps”)。它们具有低级系统访问权限,并且可以使用 WebKit 渲染器,允许您在 CSS 和 HTML 中创建 GUI,并且它们有自己的窗口和图标,因此它们在 chrome 中运行并不明显。这可能还为时过早,但在桌面应用程序领域值得关注。

于 2012-12-09T02:56:37.817 回答