【问题标题】:JavaScript: Standalone compiler or interpreter for Windows?JavaScript:Windows 的独立编译器或解释器?
【发布时间】:2019-05-17 17:55:58
【问题描述】:

适用于 WindowsJavaScript 编译器或解释器有哪些?

我最近读了Eloquent JavaScript这本书。本书向读者介绍了使用 JavaScript 作为第一语言的编程。遗憾的是,这些程序仅限于在嵌入 HTML 的浏览器中运行。所以,我想知道是否可以编写可以独立执行的 JavaScript 程序。

编译器或解释器应该作为预编译的二进制文件很容易获得,初学者可以下载和安装。他应该能够编写用这个编译器编译的简单的独立 JavaScript 程序。可以与此编译器一起使用的其他 JavaScript 库、框架、IDE 和调试支持将是一个加分项。

【问题讨论】:

  • Windows Scripting Host 独立运行 JS
  • user422039:您能否以答复的形式回复有关 WSH 作为 JS 编译器的更多信息?
  • @AshwinNanjappa - 如果你可以上网,那么这里有一个 - labs.codecademy.com 它还有免费的 JS、Ruby、Py 教程等等。

标签: javascript windows


【解决方案1】:

还没有人提到,window自带的javascript编译器:http://msdn.microsoft.com/en-us/library/vstudio/7435xtz6(v=vs.100).aspx

Microsoft (R) JScript Compiler version 8.00.50727
for Microsoft (R) .NET Framework version 2.0.50727
Copyright (C) Microsoft Corporation 1996-2005. All rights reserved.

jsc [options] <source files> [[options] <source files>...]

                         JScript Compiler Options

                           - OUTPUT FILES -
  /out:<file>              Specify name of binary output file
  /t[arget]:exe            Create a console application (default)
  /t[arget]:winexe         Create a windows application
  /t[arget]:library        Create a library assembly
  /platform:<platform>     Limit which platforms this code can run on; must be x86, Itanium, x64, or anycpu, which is the default

                           - INPUT FILES -
  /autoref[+|-]            Automatically reference assemblies based on imported namespaces and fully-qualified names (on by default)
  /lib:<path>              Specify additional directories to search in for references
  /r[eference]:<file list> Reference metadata from the specified assembly file
                           <file list>: <assembly name>[;<assembly name>...]

                           - RESOURCES -
  /win32res:<file>         Specifies Win32 resource file (.res)
  /res[ource]:<info>       Embeds the specified resource
                           <info>: <filename>[,<name>[,public|private]]
  /linkres[ource]:<info>   Links the specified resource to this assembly
                           <info>: <filename>[,<name>[,public|private]]

                           - CODE GENERATION -
  /debug[+|-]              Emit debugging information
  /fast[+|-]               Disable language features to allow better code generation
  /warnaserror[+|-]        Treat warnings as errors
  /w[arn]:<level>          Set warning level (0-4)

                           - MISCELLANEOUS -
  @<filename>              Read response file for more options
  /?                       Display help
  /help                    Display help
  /d[efine]:<symbols>      Define conditional compilation symbol(s)
  /nologo                  Do not display compiler copyright banner
  /print[+|-]              Provide print() function

                           - ADVANCED -
  /codepage:<id>           Use the specified code page ID to open source files
  /lcid:<id>               Use the specified LCID for messages and default code page
  /nostdlib[+|-]           Do not import standard library (mscorlib.dll) and change autoref default to off
  /utf8output[+|-]         Emit compiler output in UTF-8 character encoding
  /versionsafe[+|-]        Specify default for members not marked 'override' or 'hide'

在任何 Windows 安装中通常都有几个副本,但它们通常不在路径中,因此您必须找到它们。

编译器能够将 javascript 文件编译成可执行文件,可以在任何安装了 .NET 的 Windows 机器上运行。

【讨论】:

    【解决方案2】:

    Node.js 可以很好地用作解释器,即使您不选择将其用于 Web 应用程序。它是一个在 V8 JavaScript 引擎上运行的框架。它是well documented,有大量官方和third party modules

    require cygwin 可以在 Windows 上运行(或者你可以compile it with MingW)。 node-js.prcn.co.cc 提供了预编译的二进制文件,包括所需的 cygwin 库。

    【讨论】:

    【解决方案3】:

    有几个免费的独立 Javascript 解释器可用:

    1. V8 - 这与 Chrome 浏览器中使用的 Javascript 引擎相同。
    2. SpiderMonkey - 来自 Mozilla。
    3. Rhino - Java 上的 Javascript 实现。

    【讨论】:

    • 它们是否可用作预编译的二进制文件?一个新的编程学生可以下载它并用它编译一个“Hello World”程序吗?
    • @Ashwin 如果您可以关注、查找和阅读文档,那么可以。
    • Raynos:您能否为这些解释器添加预构建二进制文件的链接?
    • @Raynos:Rhino 有预编译的二进制文件,如果您的系统中安装了 JRE,您可以运行这些二进制文件。至于其他的,我不确定。但是从源代码构建并不是那么难,并且对于任何初出茅庐的程序员来说都是一件好事。
    • @Ashwin 哦,对不起,我撒谎了。您可以下载 V8 源代码并构建它。只需阅读文档的 .h 文件即可。祝你好运。
    【解决方案4】:

    jsdb 很好。我在editplus 中使用它,有时在Aptana Studio 中使用它

    【讨论】:

    • 感谢您的提示!用它搭建一个简单的服务器,很好很容易做到!
    【解决方案5】:

    好的,Windows Scripting Host 是使用 Microsoft 的 Active Scripting 执行各种管理任务的工具,并且可以运行各种语言的脚本,包括 JScript,它们的 ECMAScript 实现。没有什么可说的了,所以将您的浏览器指向参考 - http://msdn.microsoft.com/en-us/library/shzd7dy4(VS.85).aspx

    忘记编译器吧,顺便说一句,ECMAScript 是解释性语言(JIT 编译是另一个问题)

    另外,请注意,ECMAScript 标准没有定义任何标准 I/O,因此宿主程序负责提供它。

    【讨论】:

      【解决方案6】:

      您也可以在some circumstances 下直接在命令提示符下运行 JScript 脚本(Microsoft 的 Javascript 实现)。

      但我个人最喜欢的是犀牛,在另一个答案中提到。

      【讨论】:

      • 当你启动 cmd.exe 时打开的窗口...如果 -1 来自你,你能告诉我更具体一点,答案有什么问题吗?
      • "DOS box" 表示 DOS 正式失效 4.7 年(WinME 的 MS EoL 日期)
      • DOS 本身,是的,但是你在 cmd.exe 中仍然有一个相当多的 DOS 模拟器。而且我不止一次将术语“dos box”作为控制台的同义词阅读......不过我会更新答案。
      【解决方案7】:

      对于您要查找的内容可能有点复杂,但您可以使用 Rhino's JavaScript Compiler 将 JavaScript 源代码编译为 Java 类文件,然后可以使用标准 GCJ frontend to the GCC compiler suite 将其编译为二进制可执行程序。

      正如其他人所提到的,ECMAScript 的 JScript 实现在现代 Windows 安装中默认可用。带有“.js”扩展名的文件可以双击执行或使用cscript.exe命令在命令行上运行。

      【讨论】:

      • Maerics:JScript 与 JavaScript 有何不同?
      • @Ashwin:嗯,它们“非常”相似(?),这是JScript and ECMAScript/JavaScript之间的兼容性图表。
      【解决方案8】:

      我也有同样的需求,但最终找到了一个名为 DeskJS (https://deskjs.wordpress.com) 的应用程序。它是一个免费且可移植的 Windows 控制台应用程序,可让您运行纯 JavaScript 代码,甚至加载任何现有的 JS 文件。它支持在浏览器中实现的基本 JS 弹出框。您可以将命令保存为 JS 文件,这些文件可以在启动时运行,也可以通过将它们拖放到应用程序上来运行。此外,它还有更多功能,例如您可以为 Sublime Text 创建一个构建系统,该系统可以通过 cmd 运行 JS 文件,它支持自定义整个控制台的主题和 sn-ps,让您可以保存 JavaScript 代码的短 sn-ps 以供以后使用利用。该应用程序仍在改进中,并包含其他原生 API。

      【讨论】:

        【解决方案9】:

        你试过Mozilla XUL & XULRunner吗?它比解释器复杂得多,但它也可以在 MacOsX 和 Linux 上运行,而不仅仅是 Windows。 Firefox 和 Thunderbird 是使用它编写的(是的,Firefox 是用 Javascript 编写的!)。下个月将在华沙FalsyValues 会议上举办XUL 研讨会-link

        【讨论】: