您如何通过终端运行JavaScript脚本?


272

举例来说,如果你要运行一个Python脚本您可以键入蟒蛇filename.py或者,如果你想运行一个C程序将filename然后./文件名。如何使用.js文件执行此操作?


1
JS不是通用语言,那么为什么要这么做呢?通过<script>标记将.js文件包含到.htm(l)页面中,然后在浏览器中打开该页面。
helpermethod 2011年

3
@BLUC称为可执行文件。
helpermethod 2011年

可执行文件,应用程序,程序或二进制文件。在更有用的注释上,您将需要一个JavaScript解释器,例如V8或Rhino,或者我忘记的其他1000个解释器之一。
科尔宾

9
@OliverWeiler在一般情况下不像其他某些语言那么容易应用,但是我相信它可以在网页之外使用它的应用程序:)。
科宾

JavaScript的应用程序在Unity 3D中
Bradman175'3

Answers:


123

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

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

> rhino filename.js

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

如果掌握了为网页编写的脚本,则可能需要对其进行包装或修改,以使其能够接受来自stdin的参数并写入stdout。(我相信Rhino可以模仿标准浏览器全局变量的模式,这很有帮助,尽管我现在找不到用于此目的的文档。)


4
仅供参考,犀牛和蜘蛛猴之间的差异(均为Mozilla创作):stackoverflow.com/questions/3563909/rhino-vs-spidermonkey
Kelvin

3
在Debian / Ubuntu上:“ apt-get install rhino”和二进制文件称为js。
pevik

我不知道,如果你觉得同样的事情,但我发现rhyno相当脆弱和马车...(运行Ubuntu 14.04)
尼卡比曹

1
对于我来说,这项工作比使用console.log()使用print(“ msg”)进行调试
Arefe

391

另一个答案是NodeJS!

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

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

$ node
> 2 + 4
6
> 

注意:如果要退出,请键入

.exit

您还可以运行如下JavaScript文件:

node file.js

«立即安装»


@NadirSampaoli是的,这是一项非常棒的新技术!
尼卡比曹

唯一的缺点(如果您要称呼它)是该节点始终处于“严格模式”。这是正确的吗?
Nadir Sampaoli 2013年

@NadirSampaoli嗯,我不确定。看到这个问题:stackoverflow.com/q/9031888/1420197
尼卡比曹

10
@NadirSampaoli我怀疑它是否算作“缺点”。严格模式对每个人都更好。
顺磁牛角包

关于将javascript包装到最终的“消费者”命令中的任何建议,用户不必关心吗?如在$> sudo apt-get install myFancyCmd后面$>myFancyCmd hello.jpg -w 1234
Frank Nocke

133

如果您使用的是Mac,则可以jsc通过输入以下内容在OS X(终端)中获取JavaScript控制台:

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

Terminal.app中

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

jsc your_awesome_script_name.js

注意:我console.log()在开发期间使用,但是jsc需要该debug()功能。

Ubuntu上,您可以使用一些不错的ECMAScript shell。在它们之间值得一提的是SpiderMonkey。您可以通过添加sudo apt-get install spidermonkey

正如其他人所说,在Windows上,您可以依赖cscriptwscript直接在OS 上构建。

我还会添加另一种:) 解决问题的方法,如果您有时间并且想学习新事物,我想提到coffee-script,它具有自己的编译器/控制台,并且为您提供了超正确的Javascript。您也可以在浏览器中尝试它(链接“ try coffeescript”)。


从10.04开始,Ubuntu不支持SpiderMonkey。(您知道为什么吗?askubuntu.com/q/180572/482285
maciek,2016年

1
@maciek SpiderMonkey仍可用于Ubuntu,但使用另一个名称:packages.ubuntu.com/trusty/libmozjs-24-bin
microspino

1
@maciek ...因此您可以执行以下操作:sudo apt-get install libmozjs-24-bin并将sudo ln -sf /usr/bin/js24 /usr/bin/js其与shell中的js一起使用。
microspino

顺便说一句,它console.log可以很好地与node一起工作,该节点已在Ubuntu上安装了sudo apt install nodejs。非常适合console.log('hey world, here I am')可以运行的应用程序node hey.js
Nagev

30

为此,请使用node.js,这是在Mac上node使用安装方法的示例brew

brew update && install node

然后通过键入来运行程序node filename.js,您可以将其console.log()用于输出。


这与github.com/remy/nodemon结合使用非常好,它会监视任何javascript文件并在发生任何更改时重新运行它。因此,只需使用nodemon yourjavascript.js来运行它
Denis

4
不是brew install nodeinstall node单靠它自己不会做任何事情。
numbermaniac

11

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


4
其实还不是那么粗糙,没有人谈论我感到惊讶console
Eduard Florinescu

11

如果您使用的是MacBook。

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

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


1
节点靠近javascript,但不完全是javascript,例如javascript不支持文件IO,默认情况下也有require函数;它可能不是测试javascript文件的好方法
Weijing Jay Lin

5

另外,如果您只是想玩转Javascript,Codecademy的 Javascript Lab 是一个不错的浏览器选项。

他们也有Python和Ruby IDE。


4

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

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

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


有没有一款适用于Ubuntu的Google Chrome浏览器?
BLUC 2011年

您应该已经在问题中提供了至关重要的信息。抱歉,我是Windows怪胎-我对Ubuntu不太了解。此外,从Ubuntu Shell提示符运行javascript时,您可能无法访问Google Chrome。编辑:安德烈·道尔(Andrzej Doyle)的答案是为您服务的方式。
2011年

4

我试图研究,太多反而结束了使用jsconsole.com由雷米夏普(他还创造jsbin.com)。我在Ubuntu 12.10上运行,因此我必须创建一个特殊的图标,但是如果您使用的是Windows,并且使用Chrome,则只需转到“工具”>“创建应用程序快捷方式”(请注意,这种方法不能很好地工作,或者就我而言,在Ubuntu上)。该站点的工作方式非常类似于Mac jsc控制台:实际上,它也具有一些很酷的功能(例如从URL加载库/代码),我猜jsc没有。

希望这可以帮助。



2

上述所有问题的答案都是伟大的,我看到的一两件事失踪,可以考虑运行javascripts(*.js)文件,则无关的弟弟javascriptJava

JDK提供了两个不错的工具,可以用来执行javascripts。这是命令的样子。确保导航到JDK\bin

 jjs example.js

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

 jrunscript example.js

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


1

这是一个“环岛”解决方案,但您可以使用ipython

从终端启动ipython Notebook:

$ ipython notebook

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

在此处输入图片说明


0

您还可以使用phantomjs取决于系统下载phantomjs(我的情况是最大OSX)从phantomjs.org 。你应该把路径phantomjs安装文件夹上你的JavaScript文件的顶部。例如。#!./bin/phantomjs保存您的代码。转到保存了JavaScript的终端,您可以使用运行> phantomjs filename.js


0

从技术上讲,Node.js不是我们所知道的合适的JavaScript,因为没有文档对象模型(DOM)。例如,在浏览器中运行的JavaScript脚本将不起作用。完全没有 解决方案是使用无头浏览器运行JavaScript。幸运的是,仍有一个项目处于活动状态:Mozilla Firefox具有无头模式

https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Headless_mode

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

0

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

这样做与python中的类似: $ python filename.py

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.