代码之家  ›  专栏  ›  技术社区  ›  the_drow

如何将V8编译的javascript转换为exe?

  •  9
  • the_drow  · 技术社区  · 15 年前

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

    4 回复  |  直到 12 年前
        1
  •  7
  •   Blixt    15 年前

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

    您可以在上找到有关V8的所有信息 its project page .

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

    如果您想开发使用HTML进行渲染的独立应用程序,可以看一下 Adobe Air 也。

        2
  •  6
  •   EFraim    15 年前

    不能只编译一次javascript。语言有 埃瓦 它被广泛使用。(例如,JSON)您需要携带JIT和整个运行时。

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

        3
  •  3
  •   z8000    15 年前

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

        4
  •  3
  •   Caleb James DeLisle    12 年前

    已经有几次尝试将JS转换为本地代码,但这并不是可以通过任何方式在生产中使用的东西,而是一种学术兴趣。 Java的Ryo解释器可以将JS转换成(Java)字节码,所以一种方法是将字节码转换成字节码,然后从字节码转换成GCJ原生。有一些关于犀牛和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的“本地”应用程序(Google:“Chrome打包应用程序”)。它们具有低级别的系统访问权限,可以使用WebKit渲染器,允许您使用CSS和HTML创建GUI,它们有自己的窗口和图标,因此它们在Chrome中运行并不明显。这可能还为时过早,但在桌面应用领域需要密切关注。