web-dev-qa-db-ja.com

ブラウザなしでJavaScriptを実行しますか?

ブラウザなしのJavascriptプログラミングを検討しています。他のスクリプト言語(Ruby、php、Perl、python ...)を実行するのと同じように、LinuxまたはMac OS Xコマンドラインからスクリプトを実行したい

$ javascript my_javascript_code.js

クモザル(Mozilla)とv8(Google)を調べましたが、どちらも埋め込まれているようです。

コマンドラインから実行されるスクリプト言語としてJavascriptを使用している人はいますか?

誰かが私がこれを調べている理由に興味があるなら、私は node.js をいじっていました。 node.jsのパフォーマンスから、javascriptが大きなデータを処理するための実行可能なスクリプト言語であるのではないかと思われます。

125
Daniel

私はこれを見つけました 関連する質問 トピックについてですが、直接リンクが必要な場合、ここにあります:

  • 他の人が指摘したようにRhinoをインストールできます。 この投稿 は、起動して実行する簡単な方法と、コマンドをエイリアスして簡単に呼び出す方法を示しています
  • Macを使用している場合は、WebKitのJavaScriptエンジンを呼び出すJavaScriptCoreを使用できます。 投稿はこちら
  • Chome/GoogleのV8インタープリターも使用できます。 手順はこちら
  • OSAとしてのJavaScriptは、あなたがAppleScriptを使用しているかのように(ひどい構文なしで)スクリプト可能なOS Xアプリと対話できる(興味深い)ため、興味深いものです。

Node.jsにはシェルが付属していないことに驚いていますが、実際にはepoll/selectorベースのコールバック/イベント指向のWebサーバーに近いため、完全なJS機能セットは必要ありませんが、その内部の仕組みにあまり慣れていない。

Node.jsに興味があるようで、V8に基づいているため、JavaScriptプログラミングの一貫した基盤を確保できるように、V8環境のセットアップに関する指示に従うことをお勧めします(JSCとV8のほとんどが同じですが、わかりません)。

44
jasonmp85

主な回答

はい、あなたの質問に答えるために、ブラウザなしでコマンドラインからJavaScriptを「通常の」スクリプト言語として使用することができます。他の人はまだ言及していないので、言及する価値があると思います。

Debianベースのシステム(少なくともUbuntu、Linux Mint、aptosid/siduxを含む)では、Rhinoをインストールするオプションや既に言及した他のオプションに加えて、他のオプションがあります:

  • libmozjs-24-bin パッケージをインストールします。これにより、コマンドラインでMozillaのSpidermonkeyエンジンが単純なjs24として提供され、インタラクティブなインタープリターとしても使用できます。 (名前の24は、Firefoxのバージョン24に対応することを意味します)。

  • libv8-dev パッケージをインストールします。これにより、GoogleのV8エンジンが提供されます。その例の1つとして、/usr/share/doc/libv8-dev/examples/Shell.cc.gzファイルがあります。このファイルは、非常に簡単に解凍およびコンパイルできます(例:g++ -Os Shell.cc -o Shell -lv8)。

  • パッケージ nodejs をインストールすると、nodejs実行可能ファイルを提供する実行可能ファイルjsalternative (Debianセンスで)の両方として使用可能になります。 JITコンパイルは、V8の好意により提供されています。

  • パッケージ libjavascriptcoregtk-3.0-bin をインストールし、コマンドラインからWebKitのJavaScriptCoreインタープリター(jsc)を通常のインタープリターとして使用します。そして、これはMacにアクセスする必要はありません。多くのプラットフォーム(x86やx86_64など)では、このインタープリターにはJITコンパイラーが付属します。

そのため、ほとんどコンパイルを行わずに、3つのヘビーウェイト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!
$
56
rbrito

Node.jsをiMacにインストールし、

node somefile.js

bashで動作します。

23

LinuxとMacについて尋ねたのは知っています。 Windowsに興味がある他の人があなたの質問を見つけた場合に備えて、Windowsの答えを提供します。

Windowsには、コマンドラインから使用できるJavascriptエンジンが含まれています。

Windows 98以降のすべてのバージョンのWindowsには、「 The Windows Script Host 」と呼ばれるものが含まれています。スクリプト「エンジン」をサポートするWindows標準の方法です。最初のリリース以来、WSHはMicrosoftのJavascriptバージョンであるJScriptをサポートしています。とりわけ、これは、Windowsコマンドラインから、*。jsファイルの名前を呼び出すだけで、JScriptエンジンで実行できることを意味します。 (wscript.exeまたはcscript.exeを使用)

この質問を見ることができます: IE9のJavascriptエンジン(コード名「Chakra」)のProgIdまたはCLSIDとは cscript.exeから高性能IE9 Javascriptエンジンを呼び出す方法を学習します。

10
Cheeso

誰も言及していないので: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)と呼ばれます

8
jbandi

FWIW、node.jsにはシェルが付属しています。入力してみてください。

node-repl

node.jsをインストールしたら、実際の動作を確認してください。 rlwrapをインストールして正常に動作させるのはかなり標準です。

6
thejefflarson

これは古いことは知っていますが、 Zombie.js も試してみてください。非常に高速でテストに理想的なヘッドレスブラウザ!

3
neebz

コマンドラインから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!' ]

空は限界です。

3
Eric Leschinski

Rhino をチェックアウトすることをお勧めします。

Rhinoシェルは、バッチモードでJavaScriptスクリプトを実行する方法を提供します。

Java org.mozilla.javascript.tools.Shell.Main my_javascript_code.js [args]
3
Daniel Vassallo

完全にCで記述された duktape と呼ばれるこの本当に気の利いたオープンソースECMAScript準拠のJSエンジンを見つけました。

Duktapeは埋め込み可能なJavascriptエンジンであり、移植性とコンパクトなフットプリントに重点を置いています。

幸運を!

2
Pawan Kumar

PhantomJSではこれも可能です

http://phantomjs.org/

2
Sameer

JSDB 、Linux、Windows、およびMacで利用可能です。 MozillaのSpidermonkey Javascriptエンジンを使用し、node.jsに比べてインストールするのが面倒ではないようです(少なくとも、数年前にnode.jsを試しました)。

この興味深いJavascriptシェルのリストからJSDBを見つけました: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

1
Andz

JavaScript as OSA は、appleScriptの代替としてJavaScriptを提供する拡張機能です。私は約10年前にそれを使用してきましたが、現在のOSバージョンでまだ動作しているかどうかわかりません

1