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.
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).
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 simplejs24
, qui peut être utilisé aussi comme un interprète interactif. (Le24
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écutablenodejs
et comme alternative (dans le sens de Debian) pour fournir l'exécutablejs
. 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!
$
J'ai installé Node.js sur un iMac et
node somefile.js
à bash fonctionnera.
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.
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)
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.
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]
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.
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!
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
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