2010-05-31 20 views
120

Ich untersuche Javascript-Programmierung ohne Browser. Ich möchte Skripte aus dem Linux oder Mac OS X-Befehlszeile ausgeführt werden, ähnlich wie wir andere Skriptsprache laufen (Rubin, PHP, Perl, Python ...)JavaScript ohne Browser ausführen?

$ javascript my_javascript_code.js 

Ich sah in Klammeraffe (Mozilla) und v8 (Google), aber beide scheinen eingebettet zu sein.

Wird Javascript als Skriptsprache verwendet, um von der Befehlszeile ausgeführt zu werden?

Wenn jemand neugierig ist, warum ich das hier untersuche, habe ich um node.js herumgestochert. Die Leistung von node.js lässt mich fragen, ob Javascript eine brauchbare Skriptsprache für die Verarbeitung großer Datenmengen ist.

+0

node.js ist ein JavaScript-Interpreter Kommandozeile, nicht wahr? – Nathan

+5

node.js ist kein Interpreter, es ist ein asynchrones Framework, das auf der V8-Javascript-Implementierung von Google basiert.Obwohl ich glaube, dass V8s Javascript-Intererpter in einem Knoten enthalten ist, installieren Sie –

+1

Wenn der CLI-Interpreter von V8 populär wird, könnte es ein wirklich gutes Lehrmittel sein. Ich denke, JavaScript zu programmieren, könnte ziemlich viel Spaß machen. Lua könnte ehrlich die beste Wahl sein (JS "Klassen" verwirren die Hölle von allen), aber JS 'Fähigkeit, ins Netz geworfen zu werden, würde den Tüftlern gefallen. Ich kann dieses V8 CLI selbst ausprobieren. – jasonmp85

Antwort

43

ich diese related question zum Thema gefunden, aber wenn Sie direkte Links mögen, hier sind sie:

  • Sie können Rhino installieren, wie andere darauf hingewiesen haben. This post zeigt eine einfache Möglichkeit, es einzurichten und zu alias einen Befehl, um es leicht aufzurufen
  • Wenn Sie auf einem Mac sind, können Sie JavaScriptCore verwenden, die WebKit JavaScript-Engine aufruft. Here's a post darauf
  • Sie können Chome/Googles V8-Interpreter auch verwenden. Here are instructions
  • Das JavaScript als OSA ist interessant, weil es lässt Sie (AFAIK) interagieren mit skriptfähige OS X-Anwendungen, als ob Sie in Apple waren (ohne die schreckliche Syntax)

Ich bin überrascht, node.js doesn‘ Ich komme zwar mit einer Shell, aber ich denke, es ist eher wie ein epoll/selectorbasierter Callback/ereignisorientierter Webserver, also braucht er vielleicht nicht den vollen JS-Funktionsumfang, aber ich kenne seine inneren Abläufe nicht allzu gut .

Da Sie scheinen in node.js interessiert und da es auf V8 basiert, ist es am besten, folgen Sie diesen Anweisungen auf eine V8-Umgebung eingerichtet, so dass Sie eine konsistente Basis für Ihre JavaScript-Programmierung haben (ich hoffe, JSC und V8 sind meistens gleich, aber ich bin mir nicht sicher).

+0

der Chrome/Google V8 Interpreter Link ist genau das, was ich gesucht habe! Vielen Dank! – Daniel

+2

NodeJS in 0.1.101 verfügt über einen Node-Repl, der Ihnen einen CLI-Zugriff auf die Umgebung ermöglicht. Es ist großartig zum Testen/Lernen von JS. – CyberFonic

+0

Mit nodejs v0.10.25 unter Ubuntu gibt 'nodejs' im Terminal den Zugriff auf REPL. –

3

Sie möchten vielleicht Rhino auschecken.

The Rhino Shell bietet eine Möglichkeit, JavaScript-Skripten im Batch-Modus auszuführen:

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

Nun ist es JavaScript as OSA, eine Erweiterung, die JavaScript als Alternative zu Applescript zur Verfügung stellt. Ich habe mit, dass vor etwa 10 Jahren, weiß nicht, ob es noch ist mit aktuellen OS-Versionen arbeitet

6

FWIW, node.js mit einer Schale kommt, versuchen Sie in eingeben:

node-repl 

sobald Sie node.js, um zu sehen, sie in Aktion installiert haben. Es ist ziemlich normal, rlwrap zu installieren, damit es gut funktioniert.

+0

Ich finde Node-Repl sowie Hash-Bang beide sehr gut in schnelle Programme mit NodeJS arbeiten. Es ist schnell und einfach zu bedienen. – CyberFonic

2

Ich weiß, das ist alt, aber Sie sollten auch versuchen Zombie.js. Ein kopfloser Browser, der wahnsinnig schnell und ideal zum Testen ist!

10

Ich weiß, dass Sie nach Linux und Mac gefragt haben; Ich werde die Antwort für Windows geben, falls andere Leute, die an Windows interessiert sind, Ihre Frage finden.

Windows enthält eine Javascript-Engine, die über die Befehlszeile verwendet werden kann.

Alle Versionen von Windows, seit Windows 98, haben etwas mit der Bezeichnung "The Windows Script Host" enthalten. Es ist ein Windows-Standard-Weg, um Skript "Engines" zu unterstützen. Seit der ersten Version unterstützt WSH JScript, die Microsoft-Version von Javascript. Dies bedeutet unter anderem, dass Sie von einer Windows-Befehlszeile aus einfach den Namen einer beliebigen * .js-Datei aufrufen können und in der JScript-Engine ausgeführt wird. (Entweder über wscript.exe oder cscript.exe)

können Sie diese Frage sehen: What is the ProgId or CLSID for IE9's Javascript engine (code-named "Chakra") zu erfahren, wie die leistungsfähigeren IE9 Javascript-Engine von cscript.exe aufzurufen.

52

Haupt Antwort

Ja, Ihre Frage zu beantworten, ist es möglich, JavaScript als „normale“ Skriptsprache von der Kommandozeile zu verwenden, ohne einen Browser. Da andere es noch nicht erwähnt haben, sehe ich, dass es erwähnenswert ist:

Auf Debian-basierten Systemen (und das schließt Ubuntu, Linux Mint und aptosid/sidux, mindestens), neben den Optionen der Installation von Rhino und andere bereits erwähnt, Sie haben andere Optionen haben:

  • Installieren Sie das libmozjs-24-bin-Paket, das Sie mit Mozillas Spidermonkey-Engine auf der Kommandozeile als einfaches js24 bieten wird, die auch als interaktiver Interpreter verwendet werden kann. (Die 24 im Namen bedeutet, dass es der Version 24 von Firefox entspricht).

  • Installieren Sie das libv8-dev-Paket, das Ihnen Googles V8-Engine zur Verfügung stellt. Es hat als eines seiner Beispiele die Datei /usr/share/doc/libv8-dev/examples/shell.cc.gz, die Sie sehr einfach dekomprimieren und kompilieren können (z. B. g++ -Os shell.cc -o shell -lv8).

  • Installieren das Paket nodejs und es wird sowohl als ausführbare nodejs und als alternative (im Debian-Sinn), um die ausführbare js verfügbar sein. Die JIT-Compilation wird von V8 zur Verfügung gestellt.

  • Installieren Sie das Paket libjavascriptcoregtk-3.0-bin, und verwenden Sie den JavaScriptCore-Interpreter von WebKit (jsc) als regulären Interpreter über die Befehlszeile. Und das ohne Zugriff auf einen Mac. Auf vielen Plattformen (z. B. x86 und x86_64) wird dieser Interpreter mit einem JIT-Compiler geliefert.

So, mit fast keiner Zusammenstellung werden Sie drei der schweren JavaScript-Engines zu Ihrer Verfügung haben.

Nachtrag

Sobald Sie Dinge installiert haben, können Sie einfach erstellen Dateien mit der #!/usr/bin/js shebang Linie und die Dinge werden einfach funktionieren:

$ 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! 
$ 
+1

+1 Die zweite Lösung ist einfach. Vielen Dank! – Kevin

+0

Anweisungen von Google zum Aufbau von V8: https://developers.google.com/v8/build – Cheeso

17

ich Node.js auf einem iMac und

installiert haben
node somefile.js 

in bash wird funktionieren.

+0

wow, das braucht mehr upvotes – aw04

7

Da niemand es erwähnt: Seit Java 1.6 Das Java JDK wird auch mit einer JavaScript-Befehlszeile und REPL ausgeliefert.

Es basiert auf Rhino: https://developer.mozilla.org/en/docs/Rhino

In Java 1.6 und 1.7 der Befehl jrunscript (jrunscript.exe unter Windows) genannt wird und in dem Papierkorb-Ordner des JDK gefunden werden.

So in Java 1.8 der jjs (jjs.exe unter Windows) genannt Befehl

2

Ich benutze Ubuntu 12.10 und js aus:

ab Java 1.8 wird eine neue JavaScript-Implementierung (https://blogs.oracle.com/nashorn/ Nashorn) gebündelt Command

Er ist mit meiner Installation von Java:

[email protected]:~/foo$ java -version 
java version "1.6.0_27" 
[email protected]:~/foo$ which js 
/usr/bin/js 

Einige Beispiele:

[email protected]:~/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!' ] 

Der Himmel ist die Grenze, dann rechts halten auf dem Gehen.

2

Ich fand diese wirklich nette Open-Source-ECMAScript-konforme JS Motor vollständig in C duktape

Duktape Javascript-Engine ist eine integrierbare genannt geschrieben , mit einem Fokus auf Portabilität und kompakter Stellfläche.

Viel Glück!

1

JSDB, verfügbar für Linux, Windows und Mac sollte die Rechnung ziemlich gut passen. Es benutzt Mozillas Spidermonkey-Javascript-Engine und scheint im Vergleich zu node.js weniger mühsam installiert zu werden (zumindest das letzte Mal, als ich node.js vor ein paar Jahren ausprobiert habe).

ich JSDB aus dieser interessanten Liste von Javascript Muscheln gefunden: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells