我正在研究没有浏览器的Javascript编程。我想从Linux或Mac OS X命令行运行脚本,就像我们运行任何其他脚本语言(ruby,php,perl,python ......)
$ javascript my_javascript_code.js
我看了蜘蛛猴(Mozilla)和v8(谷歌),但这两个似乎都是嵌入式的。
是否有人使用Javascript作为脚本语言从命令行执行?
如果有人好奇我为什么要研究这个问题,我一直在寻找node.js。 node.js的性能让我想知道javascript是否可以成为处理大数据的可行脚本语言。
答案 0 :(得分:56)
是的,为了回答您的问题,可以在没有浏览器的情况下从命令行使用JavaScript作为“常规”脚本语言。由于其他人尚未提及,我认为值得一提:
在基于Debian的系统上(至少包括Ubuntu,Linux Mint和aptosid / sidux),除了安装Rhino和其他已经提到的选项之外,还有其他选择:
安装libmozjs-24-bin
软件包,它将在命令行上为您提供Mozilla的Spidermonkey引擎,作为一个简单的js24
,它也可以用作交互式解释器。 (名称中的24
表示它对应于Firefox的第24版。)
安装libv8-dev
软件包,它将为您提供Google的V8引擎。作为其示例之一,它具有文件/usr/share/doc/libv8-dev/examples/shell.cc.gz
,您可以非常简单地解压缩和编译(例如,g++ -Os shell.cc -o shell -lv8
)。
安装软件包nodejs
,它既可用作可执行文件nodejs
,也可用作alternative(在Debian-sense中)以提供{{1}可执行文件JIT编译是出于V8的提供而提供的。
安装包libjavascriptcoregtk-3.0-bin
并使用WebKit的JavaScriptCore解释器(js
)作为命令行的常规解释器。这不需要访问Mac。在许多平台上(例如,x86和x86_64),这个解释器将带有一个JIT编译器。
因此,几乎没有编译,您将拥有三个重量级的JavaScript引擎。
安装完成后,您只需使用jsc
shebang行创建文件即可,而且操作正常:
#!/usr/bin/js
答案 1 :(得分:44)
我在这个主题上找到了这个related question,但是如果你想要直接链接,那么它们就是:
我很惊讶node.js没有带shell,但我想它更像是一个基于epoll / selector的回调/面向事件的web服务器,所以也许它不需要完整的JS功能集,但我对它的内部运作并不太熟悉。
由于您似乎对node.js感兴趣并且因为它基于V8,所以最好按照这些说明来设置V8环境,这样您就可以为JavaScript编程提供一致的基础(我希望JSC和V8大致相同,但我不确定。)
答案 2 :(得分:22)
我在iMac和
上安装了Node.js.node somefile.js
bash中的会起作用。
答案 3 :(得分:10)
我知道你问过Linux和Mac;我将为Windows提供答案,以防其他对Windows感兴趣的人找到您的问题。
Windows包含一个可以在命令行中使用的Javascript引擎。
从Windows 98开始,所有版本的Windows都包含了一个名为“The Windows Script Host”的内容。它是支持脚本“引擎”的Windows标准方式。自第一个版本发布以来,WSH支持JScript,微软的Javascript版本。除此之外,这意味着,从Windows命令行,您只需调用任何* .js文件的名称,它将在JScript引擎中运行。 (通过wscript.exe或cscript.exe)
您可以看到这个问题:What is the ProgId or CLSID for IE9's Javascript engine (code-named "Chakra")以了解如何从cscript.exe调用性能更高的IE9 Javascript引擎。
答案 4 :(得分:8)
由于没有人提及它:自Java 1.6以来Java JDK也捆绑了JavaScript命令行和REPL。
它基于Rhino:https://developer.mozilla.org/en/docs/Rhino
在Java 1.6和1.7中,命令名为jrunscript
(Windows上为jrunscript.exe
),可以在JDK的bin文件夹中找到。
从Java 1.8开始,捆绑了一个新的JavaScript实现(Nashorn:https://blogs.oracle.com/nashorn/)
因此,在Java 1.8中,该命令被称为jjs
(Windows上为jjs.exe
)
答案 5 :(得分:6)
FWIW,node.js附带一个shell,尝试输入:
node-repl
一旦安装了node.js就可以看到它的运行情况。安装rlwrap以使其正常工作是非常标准的。
答案 6 :(得分:3)
您可以查看Rhino。
Rhino Shell提供了一种以批处理模式运行JavaScript脚本的方法:
java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]
答案 7 :(得分:3)
我知道这已经过时但你也应该尝试Zombie.js。无头浏览器,速度非常快,非常适合测试!
答案 8 :(得分:3)
我在命令行中使用Ubuntu 12.10和js
我可以安装java:
el@apollo:~/foo$ java -version
java version "1.6.0_27"
el@apollo:~/foo$ which js
/usr/bin/js
一些例子:
el@apollo:~/foo$ js
> 5
5
> console.log("hello");
hello
undefined
> var f = function(){ console.log("derp"); };
undefined
> f();
derp
> var mybool = new Boolean();
undefined
> mybool
{}
> mybool == true
false
> mybool == false
true
> var myobj = {};
undefined
> myobj.skipper = "on my mark, engage!"
'on my mark, engage!'
> myobj.skipper.split(" ");
[ 'on',
'my',
'mark,',
'engage!' ]
天空是极限,然后继续前进。
答案 9 :(得分:2)
PhantomJS允许你这样做
答案 10 :(得分:2)
我发现这个非常漂亮的开源ECMAScript兼容的JS引擎完全用C编写,名为duktape
祝你好运!Duktape是一个可嵌入的Javascript引擎,专注于可移植性和紧凑的占用空间。
答案 11 :(得分:1)
有JavaScript as OSA,这是一个扩展,提供JavaScript作为appleScript的替代品。大约10年前我一直在使用它,不知道它是否仍在使用当前的操作系统版本
答案 12 :(得分:1)
JSDB应该能够很好地满足要求。它使用Mozilla的Spidermonkey Javascript引擎,与node.js相比,安装起来似乎不那么麻烦(至少上次我几年前尝试过node.js)。
我从这个有趣的Javascript shell列表中找到了JSDB:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells