138 votes

L’exécution de Javascript sans un navigateur ?

Je suis à la recherche dans la programmation en Javascript sans navigateur. Je veux exécuter des scripts à partir de Linux ou Mac OS X en ligne de commande, à l'instar de nous exécuter n'importe quel autre langage de script (ruby, php, perl, python...)

$ javascript my_javascript_code.js

J'ai regardé dans le singe-araignée (Mozilla) et v8 (Google), mais les deux semblent être incorporées.

Est ce que quelqu'un à l'aide de Javascript comme langage de script pour être exécuté depuis la ligne de commande?

Si quelqu'un est curieux de savoir pourquoi je suis à la recherche dans ce, j'ai été farfouillé node.js. La performance de node.js je me demande si le javascript peut être une solution viable langage de script pour le traitement de gros volumes de données.

61voto

rbrito Points 982

Principale Réponse

Oui, pour répondre à votre question, il est possible d'utiliser du JavaScript, un "régulier" langage de script en ligne de commande, sans navigateur. Depuis, d'autres n'ont pas mentionné encore, je vois qu'il vaut la peine de mentionner:

Sur les systèmes basés sur Debian (et Ubuntu, Linux Mint, et aptosid, au moins), outre les options d'installation de Rhino et autres déjà mentionnés, vous avez d'autres options:

  • Installer l' spidermonkey-bin paquet qui vous fournira avec Mozilla Spidermonkey moteur sur la ligne de commande comme un simple js, qui peut également être utilisé comme un interactive interprète.

  • Installer l' libv8-dev package, ce qui permettra à Google de moteur V8. Il a, comme l'un de ses exemples, le fichier /usr/share/doc/libv8-dev/examples/shell.cc.gz qui vous pouvez décompresser et de compiler de manière très simple (par exemple, g++ -Os shell.cc -o shell -lv8).

  • Installer le paquet nodejs et il sera disponible à la fois sous l'exécutable nodejs et comme une alternative (dans le paquet Debian-sens) de fournir l' js exécutable.

  • Installer le paquet libjavascriptcoregtk-3.0-bin et l'utilisation de WebKit est JavaScriptCore interprète (jsc) en tant que régulier interprète à partir de la ligne de commande. Et c'est sans avoir besoin d'avoir accès à un Mac.

Ainsi, avec presque pas de compilation, vous disposez de trois des poids lourds moteurs JavaScript à votre disposition.

Addendum

Une fois que vous avez des choses installé, vous pouvez simplement créer des fichiers avec l' #!/usr/bin/js ligne shebang, et les choses vont juste travail:

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

47voto

jasonmp85 Points 3196

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

  • 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 Mac, vous pouvez utiliser JavaScriptCore, qui appelle WebKit du moteur JavaScript. Voici un post sur elle
  • Vous pouvez utiliser Chome/Google V8 interprète ainsi. Voici les instructions
  • Le JavaScript que l'OSA est intéressant car il vous permet d' (autant que je sache) d'interagir avec des scripts apps OS X comme si vous étiez en AppleScript (sans le terrible syntaxe)

Je suis surpris node.js ne vient pas avec un shell, mais je suppose que c'est vraiment plus comme un epoll sélecteur de fonction de rappel/l'événement orienté serveur, donc peut-être il n'a pas besoin de toute la JS ensemble de fonctionnalités, mais je ne suis pas trop familier avec son fonctionnement interne.

Puisque vous semblez intéressé par node.js et puisqu'il est basé sur les V8, il pourrait être préférable de suivre ces instructions sur l'obtention d'un V8 de l'environnement mis en place de sorte que vous pouvez avoir une base cohérente pour votre programmation en JavaScript (je l'espère JSC et V8 sont essentiellement les mêmes, mais je ne suis pas sûr).

23voto

動靜能量 Points 33008

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

en bash fonctionnera.

15voto

Cheeso Points 87022

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

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

Toutes les versions de Windows depuis Windows 98, ont quelque chose appelé "Windows Script Host". C'est une manière standard de support script "moteurs". Depuis la première version, WSH soutient JScript, la version de Microsoft de Javascript. Entre autres choses, cela signifie que, à partir d'une ligne de commande de windows, vous pouvez il suffit d'invoquer le nom d'un *.fichier js, et il sera exécuté dans le moteur JScript. (soit à l'aide wscript.exe ou cscript.exe)

Vous pouvez le voir, cette question: qu'est-Ce que le ProgId ou CLSID pour IE9 du moteur Javascript (nom de code "Chakra") pour apprendre à invoquer plus la performance IE9 moteur Javascript de cscript.exe.

6voto

thejefflarson Points 51

FWIW, node.js est livré avec une coque, essayez de taper dans :

une fois que vous avez installé node.js pour la voir en action. C’est assez standard pour installer rlwrap pour faire fonctionner très bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X