【问题标题】:How do you run JavaScript script through the Terminal?你如何通过终端运行 JavaScript 脚本?
【发布时间】:2012-01-21 21:48:24
【问题描述】:

例如,如果您要运行 Python 脚本,您可以输入 python filename.py 或者如果您想运行 C 程序 make filename 然后 ./ 文件名。您如何处理 .js 文件?

【问题讨论】:

  • JS 不是通用语言,那你为什么要这样做呢?通过
  • @BLUC 它被称为可执行文件。
  • 可执行文件、应用程序、程序或二进制文件。更有用的一点是,你需要一个 JavaScript 解释器,比如 V8 或 Rhino,或者我忘记的其他 1000 个解释器之一。
  • @OliverWeiler 在一般情况下它不像其他一些语言那样容易应用,但我相信它可以在网页之外有它的应用程序:)。
  • 一个 JavaScript 应用在 Unity 3D 中

标签: javascript terminal


【解决方案1】:

另一个答案是 NodeJS!

Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的平台,用于轻松构建快速、可扩展的网络应用程序。 Node.js 使用事件驱动的非阻塞 I/O 模型,使其轻量且高效,非常适合跨分布式设备运行的数据密集型实时应用程序。

使用终端,您将能够使用node 命令启动它。

$ node
> 2 + 4
6
> 

注意:如果您想退出,只需键入

.exit

您也可以像这样运行 JavaScript 文件:

node file.js

« Install it NOW »

【讨论】:

  • @NadirSampaoli 是的,这是一项非常棒的新技术!
  • 唯一的缺点(如果你想这样称呼它)是该节点始终处于“严格模式”。对吗?
  • @NadirSampaoli 嗯,我不确定。看到这个问题:stackoverflow.com/q/9031888/1420197
  • @NadirSampaoli 我怀疑它算作“不利因素”。严格模式更适合所有人。
  • 关于将 javascript 包装到最终的“消费者”命令中的任何建议,用户不必关心?如$> sudo apt-get install myFancyCmd 后跟$>myFancyCmd hello.jpg -w 1234?
【解决方案2】:

如果您有 Mac,您可以在 OS X(终端)中输入jsc javascript 控制台

/System/Library/Frameworks/JavaScriptCore.framework/Versions/Current/Resources/jsc

Terminal.app中。

您还可以通过将其名称添加为 jsc 的参数来运行您的 .js 脚本之一,如下所示:

jsc your_awesome_script_name.js

注意:我在开发过程中使用console.log(),但jsc需要debug()函数。

Ubuntu 上,您可以使用一些不错的 ECMAScript shells。其中值得一提的是 SpiderMonkey。您可以通过sudo apt-get install spidermonkey添加它

Windows 上,正如其他人所说,您可以依赖直接在操作系统上构建的 cscriptwscript

我还要添加另一个 :) 对问题的思考方式,如果您有时间并且想学习新事物,我想提一下 coffee-script,它有自己的编译器/控制台并为您提供超正确的 Javascript。您也可以在浏览器上试用(链接“try coffeescript”)。

2021 年 7 月更新: 您还可以安装和使用出色的QuickJS,它在 OS X 上可以通过brew install quickjs 安装。然后您的提示将提供一个交互式控制台,qjs

【讨论】:

  • Ubuntu 从 10.04 开始不支持 SpiderMonkey。 (你知道为什么吗?askubuntu.com/q/180572/482285
  • @maciek SpiderMonkey 仍可用于 Ubuntu,但使用另一个名称:packages.ubuntu.com/trusty/libmozjs-24-bin
  • @maciek ...所以你可以这样做:sudo apt-get install libmozjs-24-bin 并使用 sudo ln -sf /usr/bin/js24 /usr/bin/js 在你的 shell 中将它与 js 一起使用。
  • 顺便说一句,console.log 可以与 node 配合使用,使用 sudo apt install nodejs 安装在 Ubuntu 上。非常适合 console.log('hey world, here I am') 那种应用程序,您可以使用 node hey.js 运行它。
【解决方案3】:

您需要一个 JavaScript 引擎(例如 Mozilla's Rhino)来评估脚本 - 就像您对 Python 所做的一样,尽管后者是标准发行版附带的。

如果您在路径上安装了 Rhino(或替代品),那么运行 JS 确实可以像

> rhino filename.js

值得注意的是,虽然 JavaScript 本身只是一种语言,但许多特定脚本假定它们将在类似浏览器的环境中执行 - 因此尝试访问全局变量,例如 location.href , 并通过附加 DOM 对象而不是调用 print 来创建输出。

如果您有一个为网页编写的脚本,您可能需要对其进行包装或修改以使其接受来自标准输入的参数并写入标准输出。 (我相信 Rhino 有一种模拟标准浏览器全局变量的模式,这很有帮助,虽然我现在找不到这方面的文档。)

【讨论】:

  • 仅供参考,犀牛和蜘蛛猴之间的区别(都是 Mozilla 创作的):stackoverflow.com/questions/3563909/rhino-vs-spidermonkey
  • 在 Debian / Ubuntu 上:'apt-get install rhino' 并且二进制文件称为 js。
  • 我不知道你是否也有同样的感觉,但我发现 rhyno 非常脆弱且有问题......(运行 Ubuntu 14.04)
  • 这对我有用,使用 print("msg") 进行调试而不是使用 console.log()
【解决方案4】:

为此使用 node.js,这里是如何在 mac 上使用 brew 安装 node 的示例:

brew update && install node

然后输入node filename.js运行你的程序,你可以使用console.log()输出。

【讨论】:

  • 这与github.com/remy/nodemon 结合非常好,它将监视任何javascript文件并在任何更改时重新运行它。所以只需使用 nodemon yourjavascript.js 运行它
  • 你不是说brew install node吗? install node 本身不会真正做任何事情。
【解决方案5】:

这很粗糙,但是您可以在 Chrome 中打开 Javascript 控制台(Ctrl+Shift+J)并粘贴 *.js 文件的文本内容并按 Enter。

【讨论】:

  • 其实没那么粗,居然没人说console
【解决方案6】:

如果您使用的是 MacBook。

  1. 在你的系统中设置node.js并打开终端
  2. 导航到保存js文件的目录。
  3. 执行运行node <filename.js>

例如,如果文件名是script.js,则运行node script.js

【讨论】:

  • node 接近于 javascript 但并不完全是 javascript,例如 javascript 不支持文件 IO,默认也有 require 函数;这可能不是测试 javascript 文件的好方法
【解决方案7】:

或者,如果您只是想玩转 Javascript,那么浏览器中的一个不错的选项是 Codecademy'sJavascript Lab。

他们还有 Python 和 Ruby IDE。

【讨论】:

    【解决方案8】:

    如果您使用的是 Windows PC,则可以使用 WScript.exe 或 CScript.exe

    请记住,您不在浏览器环境中,因此 document.write 之类的东西或任何依赖于 window 对象的东西都不起作用,例如 window.alert。相反,您可以调用 WScript.Echo 将内容输出到提示符。

    http://msdn.microsoft.com/en-us/library/9bbdkx3k(VS.85).aspx

    【讨论】:

    • 是否有适用于 Ubuntu、Google Chrome 的?
    • 您应该将那条重要信息放在问题中。抱歉,我是 Windows 极客——我对 Ubuntu 了解不多。此外,在 Ubuntu shell 提示符下运行 javascript 时,您可能无法访问 Google Chrome。编辑:Andrzej Doyle 的回答是适合您的方式。
    【解决方案9】:

    我也尝试对此进行研究,但最终使用了 Remy Sharp 的 jsconsole.com(他还创建了 jsbin.com)。我在 Ubuntu 12.10 上运行,所以我必须 create a special icon 但如果你在 Windows 上并使用 Chrome,只需转到工具>创建应用程序快捷方式(请注意,这不是很好,或者在我的情况下,在Ubuntu)。这个网站的工作方式很像 Mac jsc 控制台:实际上它也有一些很酷的功能(比如从 URL 加载库/代码),我猜 jsc 没有。

    希望这会有所帮助。

    【讨论】:

      【解决方案10】:

      在 Ubuntu 上,安装 libjavascriptcoregtk-3.0-bin 并使用 /usr/bin/jsc (manpage)。

      【讨论】:

      • 对于 Ubuntu 14 更简单:sudo apt-get install nodejs; /usr/bin/nodejs foo.js。请注意,它是 v0.10.25,有点旧。
      【解决方案11】:

      您需要安装 JS 引擎,例如 Node,然后在文件的第一行使用 shebang 行,如下所示:

      script.js

      #!/usr/bin/env node
      console.log('Hello terminal');
      

      之后你必须设置可执行权限:

      chmod +x script.js

      然后运行它

      ./script.js
      

      【讨论】:

      • 谢谢 - 正是我想要的 :-)
      【解决方案12】:

      这是一个“迂回”的解决方案,但您可以使用 ipython

      从终端启动 ipython notebook:

      $ ipython notebook

      它将在您可以运行 javascript 的浏览器中打开

      【讨论】:

        【解决方案13】:

        以上所有答案都很棒,我发现缺少一件东西,可以考虑运行javascripts(*.js) 文件,javascript 无关 兄弟Java

        JDK 提供了两个不错的工具,可用于执行javascripts。 下面是命令。确保导航到JDK\bin

         jjs example.js
        

        它提供了另一个类似这样的commmand 工具-

         jrunscript example.js
        

        我希望这可能对其他人有所帮助。

        【讨论】:

          【解决方案14】:

          通过 bash 运行 js 文件所需要做的就是输入: $ node filename.js

          这类似于在 python 中,当你这样做时: $ python filename.py

          【讨论】:

            【解决方案15】:

            您也可以使用phantomjsphantomjs.org 下载 phantomjs,具体取决于系统(我的情况是 Max OSX) .您应该将 phantomjs 安装文件夹的路径放在 javascript 文件的顶部。例如。 #!./bin/phantomjs 保存您的代码。转到保存您的 javascript 的终端,您可以使用 > phantomjs filename.js

            运行

            【讨论】:

              【解决方案16】:

              从技术上讲,Node.js 不是我们所知道的正确的 JavaScript,因为没有 Document Object Model (DOM)。例如,在浏览器中运行的 JavaScript 脚本将不起作用。完全没有。解决方案是使用无头浏览器运行 JavaScript。幸运的是,还有一个项目仍然活跃:Mozilla Firefox 有一个headless mode

              https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode

              $ /Applications/Firefox.app/Contents/MacOS/firefox -headless index.html
              *** You are running in headless mode.
              

              【讨论】:

                猜你喜欢
                • 2014-08-13
                • 1970-01-01
                • 1970-01-01
                • 2021-05-12
                • 1970-01-01
                • 1970-01-01
                • 2011-04-18
                • 2020-11-27
                • 2021-07-31
                相关资源
                最近更新 更多