Exécuter JavaScript sans navigateur?

je cherche la programmation Javascript sans navigateur. Je veux exécuter des scripts depuis la ligne de commande Linux ou Mac OS X, un peu comme nous exécutons tout autre langage de script (ruby, php, perl, python)...)

$ javascript my_javascript_code.js

j'ai regardé spider monkey (Mozilla) et v8 (Google), mais les deux semblent être intégrés.

est-ce que Quelqu'un utilisant Javascript comme langage de script doit être exécuté depuis la ligne de commande?

si n'importe qui est curieux de savoir pourquoi je suis à la recherche dans ce, j'ai été poking autour de noeud.js . La performance du noeud.js me fait me demander si javascript peut être un langage de script viable pour le traitement de grandes données.

123
demandé sur 太極者無極而生 2010-05-31 08:48:32

13 réponses

j'ai trouvé ce question connexe sur le sujet, mais si vous voulez des liens directs, ici ils sont:

  • Vous pouvez installer Rhino comme d'autres l'ont souligné. Ce post montre un moyen facile de l'obtenir vers le haut et en cours d'exécution et comment attribuer une commande pour appeler facilement
  • si vous êtes sur un Mac, vous pouvez utiliser JavaScriptCore, qui invoque le moteur JavaScript de WebKit. Voici un post sur
  • vous pouvez également utiliser L'interpréteur V8 de Chome/Google. Voici les instructions
  • le JavaScript comme OSA est intéressant parce qu'il vous permet (AFAIK) d'interagir avec les applications OS X scriptables comme si vous étiez en AppleScript (sans la syntaxe terrible)

je suis surpris noeud.js ne vient pas avec un shell, mais je suppose que c'est plus comme un epoll / selector webserveur de callback / event-oriented, donc peut-être qu'il n'a pas besoin de l'ensemble complet des fonctionnalités JS, mais je ne suis pas trop familier avec son fonctionnement interne.

Puisque vous semblez intéressé par nœud.js et comme il est basé sur V8, il serait peut-être préférable de suivre ces instructions pour configurer un environnement V8 afin que vous puissiez avoir une base cohérente pour votre programmation JavaScript (j'espère que JSC et V8 sont la plupart du temps les mêmes, mais je ne suis pas sûr).

43
répondu jasonmp85 2017-05-23 12:10:31

Réponse Principale

Oui, pour répondre à votre question, il est possible d'utiliser JavaScript comme langage de script "régulier" depuis la ligne de commande, sans navigateur. Puisque d'autres ne l'ont pas encore mentionné, je vois qu'il vaut la peine de le mentionner:

sur les systèmes basés sur Debian (et Cela inclut Ubuntu, Linux Mint, et aptosid/sidux, au moins), en plus des options d'installation de Rhino et d'autres déjà mentionnées, vous avez d'autres options:

  • installez le paquet libmozjs-24-bin , qui vous fournira le moteur Spidermonkey de Mozilla sur la ligne de commande comme un simple js24 , qui peut être utilisé aussi comme un interprète interactif. (Le 24 dans le nom signifie qu'il correspond à la version 24 de Firefox).

  • installez le paquet libv8-dev qui vous fournir le moteur V8 de Google. Il a, comme un de ses exemples, le fichier /usr/share/doc/libv8-dev/examples/shell.cc.gz que vous pouvez décompresser et compiler très simplement (par exemple, g++ -Os shell.cc -o shell -lv8 ).

  • installez le paquet nodejs et il sera disponible à la fois comme exécutable nodejs et comme alternative (dans le sens de Debian) pour fournir l'exécutable js . La compilation JIT est fournie à titre gracieux V8.

  • installez le paquet libjavascriptcoregtk-3.0-bin et utilisez L'interpréteur JavaScriptCore de WebKit ( jsc ) comme interpréteur régulier à partir de la ligne de commande. Et c'est sans avoir besoin d'avoir accès à un Mac. Sur de nombreuses plateformes (par exemple x86 et x86_64), cet interpréteur sera fourni avec un compilateur JIT.

ainsi, avec presque aucune compilation, vous aurez trois de la moteurs JavaScript lourds à votre disposition.

Addendum

une fois que vous avez installé des choses, vous pouvez simplement créer des fichiers avec la ligne #!/usr/bin/js shebang et les choses ne feront que fonctionner:

$ 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!
$
54
répondu rbrito 2014-12-28 02:39:40

J'ai installé Node.js sur un iMac et

node somefile.js

à bash fonctionnera.

20
répondu 太極者無極而生 2012-10-01 09:38:06

je sais que vous avez demandé à propos de Linux et Mac; je vais fournir la réponse Pour Windows, au cas où d'autres personnes qui sont intéressés par Windows trouver votre question .

Windows inclut un moteur Javascript qui peut être utilisé à partir de la ligne de commande.

toutes les versions de Windows, depuis Windows 98, ont inclus quelque chose appelé " le script hôte de Windows ". C'est un windows-méthode standard pour prendre en charge le script "engines". Depuis la première version, WSH supporte JScript, la version de Javascript de Microsoft. Entre autres choses, cela signifie que, à partir d'une ligne de commande windows, vous pouvez simplement invoquer le nom de n'importe quel *.fichier js, et il sera exécuté dans le moteur JScript. (via WScript.exe ou cscript.exe) 151910920"

vous pouvez voir cette question: Quel est le programme ou CLSID pour le moteur Javascript D'IE9 (nommé code " Chakra") pour apprendre à invoquer le moteur Javascript IE9 de plus haute performance à partir de csccript.EXE.

10
répondu Cheeso 2017-05-23 12:34:42

puisque personne ne l'a mentionné: depuis Java 1.6 Le Java JDK est également livré avec une ligne de commande JavaScript et REPL.

il est basé sur le rhinocéros: https://developer.mozilla.org/en/docs/Rhino

en Java 1.6 et 1.7 la commande est appelée jrunscript ( jrunscript.exe sous Windows) et se trouve dans le dossier bin du JDK.

à partir de Java 1.8 il y a un nouveau JavaScript mise en œuvre (Nashorn: https://blogs.oracle.com/nashorn / )

ainsi, en Java 1.8, la commande est appelée jjs ( jjs.exe sous Windows)

8
répondu jbandi 2013-08-23 22:02:30

FWIW, node.js est livré avec un shell, essayez de taper:

node-repl

une fois que vous avez installé node.js de le voir en action. Il est assez standard d'installer rlwrap pour le faire fonctionner correctement.

6
répondu thejefflarson 2010-05-31 05:38:35

vous pouvez choisir de consulter Rhino .

le Shell Rhino fournit un moyen d'exécuter des scripts JavaScript en mode batch:

java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]
3
répondu Daniel Vassallo 2010-05-31 04:52:22

J'utilise Ubuntu 12.10 et js de la ligne de commande

il est disponible avec mon installation de java:

el@apollo:~/foo$ java -version
java version "1.6.0_27"
el@apollo:~/foo$ which js
/usr/bin/js

quelques exemples:

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!' ]

le ciel est La limite, puis continuer à droite sur cours.

3
répondu Eric Leschinski 2014-01-08 08:19:45

je sais que c'est vieux mais vous devriez aussi essayer Zombie.js . Un navigateur sans tête qui est incroyablement rapide et idéal pour les tests !

2
répondu neebz 2011-04-23 08:07:19

PhantomJS vous permet de le faire aussi

http://phantomjs.org /

2
répondu Sameer 2014-08-07 18:13:24

j'ai trouvé ce moteur JS vraiment chic, compatible ECMAScript, complètement écrit en C appelé duktape

Duktape est un moteur JavaScript intégrable, avec un accent sur la portabilité et l'empreinte compacte.

bonne chance!

2
répondu Pawan Kumar 2015-02-11 15:12:30

il y a JavaScript comme OSA , une extension qui fournit JavaScript comme alternative à appleScript. J'ai utilisé cela il y a environ 10 ans, Je ne sais pas si cela fonctionne toujours avec les versions actuelles du système D'exploitation

1
répondu Sean Patrick Floyd 2010-05-31 04:55:02

JSDB , disponible pour Linux, Windows, et Mac devrait convenir assez bien. Il utilise le moteur Javascript Spidermonkey de Mozilla et semble être moins compliqué à installer que le noeud.js (au moins la dernière fois que j'ai essayé de nœud.js il y a quelques années).

j'ai trouvé JSDB dans cette intéressante liste de shells Javascript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

1
répondu Andz 2015-03-02 19:22:29