在没有浏览器的情况下执行 JavaScript?

我正在研究没有浏览器的 Javascript 编程。我想从 Linux 或 Mac OS x 命令行运行脚本,就像我们运行其他脚本语言(ruby、 php、 perl、 python...)一样

$ javascript my_javascript_code.js

我查看了 Spider Monkey (Mozilla)和 v8(Google) ,但它们似乎都是嵌入式的。

是否有人使用 Javascript 作为从命令行执行的脚本语言?

如果有人好奇我为什么要调查这件事,我一直在调查 Node Js。Js 的性能让我怀疑 javascript 是否是处理大数据的可行脚本语言。

129629 次浏览

你可能想看看 犀牛

Rhino Shell 提供了一种在批处理模式下运行 JavaScript 脚本的方法:

java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]

还有 JavaScript 作为 OSA,一个提供 JavaScript 作为 AppleScript 替代品的扩展。我大约10年前就开始使用它了,不知道现在的操作系统版本是否还能正常工作

我发现这个 相关问题的主题,但如果你想直接链接,这里他们:

  • 正如其他人指出的那样,您可以安装 Rhino。这个帖子展示了一种简单的方法来启动和运行它,以及如何使用别名命令来轻松地调用它
  • 如果你在 Mac 上,你可以使用 JavaScriptCore,它调用 WebKit 的 JavaScript 引擎
  • 你也可以使用 Chome/Google 的 V8解释器
  • JavaScript 作为 OSA 很有趣,因为它可以让你(AFAIK)与可编写脚本的 OS X 应用程序进行交互,就像你在 AppleScript 中一样(没有糟糕的语法)

我很惊讶 node.JS 没有 shell,但是我猜它更像是一个基于 epoll/selector 的回调/面向事件的 Web 服务器,所以也许它不需要完整的 JS 特性集,但是我对它的内部工作原理并不太熟悉。

既然您似乎对 node.js 感兴趣,而且它是基于 V8的,那么最好按照这些说明来设置一个 V8环境,这样您就可以为您的 JavaScript 编程建立一个一致的基础(我希望 JSC 和 V8大致相同,但我不确定)。

FWIW,node.js 附带一个 shell,试着输入:

node-repl

一旦您安装了 node.js 来查看它的运行情况。安装 rlwra 以使其正常工作是相当标准的。

我知道这是旧的,但你也应该尝试 僵尸。一个无头浏览器,这是疯狂的快速和理想的测试!

我知道你问了关于 Linux 和 Mac 的问题; 我将为 Windows 提供答案,以防其他对 Windows 感兴趣的人发现你的问题。

Windows 包含一个可以从命令行使用的 Javascript 引擎

自 Windows98以来,所有版本的 Windows 都包含了一个叫做“ Windows Script Host”的东西。这是一个支持脚本“引擎”的 Windows 标准方式。从第一个版本开始,WSH 就支持 JScript,微软的 Javascript 版本。这意味着,您可以从 windows 命令行调用任何 * 的名称。Js 文件,它将在 JScript 引擎中运行。(通过 wscript.exe 或 cscript.exe)

您可以看到这个问题: 什么是 IE9的 Javascript 引擎(代号为“ Chakra”)的 ProgId 或 CLSID学习如何从 cscript.exe 调用高性能的 IE9 Javascript 引擎。

主要答案

是的,为了回答你的问题,我们可以在没有浏览器的情况下,通过命令行使用 JavaScript 作为一个“常规”脚本语言。由于其他人还没有提到这一点,我认为值得一提:

在基于 Debian 的系统上(至少包括 Ubuntu、 Linux Mint 和 aptosid/sidux) ,除了安装 Rhino 和其他已经提到的选项之外,你还有其他选项:

  • 安装 libmozjs-78-0包,它将在命令行中提供 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另一种选择(在 Debian 意义上)提供 js可执行文件。JIT 编译是由 V8提供的。

  • 安装包 libjavascriptcoregtk-4.0-bin并使用 WebKit 的 JavaScriptCore 解释器(jsc)作为命令行中的常规解释器。而且不需要苹果电脑。在许多平台(例如 x86和 x86 _ 64)上,这个解释器将带有一个 JIT 编译器。

因此,在几乎没有编译的情况下,您就可以使用三个重量级 JavaScript 引擎。

附录

一旦你安装好了东西,你可以简单地用 #!/usr/bin/js的 shebang 行创建文件,这样就可以工作了:

$ cat foo.js
#!/usr/bin/js


console.log("Hello, world!");
$ ls -lAF /usr/bin/js /etc/alternatives/js /usr/bin/nodejs
lrwxrwxrwx 1 root root      15 Jul 16 04:26 /etc/alternatives/js -> /usr/bin/nodejs*
lrwxrwxrwx 1 root root      20 Jul 16 04:26 /usr/bin/js -> /etc/alternatives/js*
-rwxr-xr-x 1 root root 1422004 Apr 28 20:31 /usr/bin/nodejs*
$ chmod a+x foo.js
$ ./foo.js
Hello, world!
$ js ./foo.js
Hello, world!
$

旧版本:
Libmozjs-24-bin Libmozjs-52Libmozjs-60Libmozjs-91,< a href = “ https://packages.debian.org/libjavascriptcoregtk-3.0-bin”rel = “ nofollow noReferrer”> libjavascriptcoregtk-3.0-bin

我在 iMac 上安装了 Node.js

node somefile.js

在 bash 将工作。

因为没有人提到它: 从 Java 1.6开始,Java JDK 也捆绑了一个 JavaScript 命令行和 REPL。

它是基于犀牛: 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)

我使用 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!' ]

天空是极限,然后继续前进。

PhantomJS 也允许您这样做

Http://phantomjs.org/

我发现这个非常漂亮的开源 ECMAScript 兼容 JS Engine 完全是用 C 编写的,称为 胶带

Dukape 是一个可嵌入的 Javascript 引擎,侧重于可移植性和紧凑的内存占用。

祝你好运!

可用于 Linux、 Windows 和 Mac 的 JSDB 应该非常符合这个要求。它使用 Mozilla 的 SpiderMonkey Javascript 引擎,与 node.js 相比,安装起来似乎没有那么麻烦(至少在几年前我尝试过 node.js)。

我从这个有趣的 Javascript shell 列表中找到了 JSDB: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

是的,您可以使用 node.js 环境来运行 js 脚本。