sencillos - ¿Ejecutar JavaScript sin un navegador?
llamar javascript desde html (13)
Respuesta principal
Sí, para responder a su pregunta, es posible usar JavaScript como un lenguaje de scripting "normal" desde la línea de comandos, sin un navegador. Como otros no lo han mencionado todavía, veo que vale la pena mencionar:
En los sistemas basados en Debian (y esto incluye Ubuntu, Linux Mint y aptosid / sidux, al menos), además de las opciones de instalación de Rhino y otros ya mencionados, tiene otras opciones:
Instale el
libmozjs-24-bin
, que le proporcionará el motor Spidermonkey de Mozilla en la línea de comandos como un simplejs24
, que también se puede usar como un intérprete interactivo. (Los24
en el nombre significa que corresponde a la versión 24 de Firefox).Instale el paquete
libv8-dev
, que le proporcionará el motor V8 de Google. Tiene, como uno de sus ejemplos, el archivo/usr/share/doc/libv8-dev/examples/shell.cc.gz
que puede descomprimir y compilar de forma muy simple (por ejemplo,g++ -Os shell.cc -o shell -lv8
).Instale el paquete
nodejs
y estará disponible tanto como elnodejs
ejecutablejs como como una alternative (en el sentido de Debian) para proporcionar el ejecutablejs
. La compilación de JIT se proporciona como cortesía de V8.Instale el paquete
libjavascriptcoregtk-3.0-bin
y use el intérprete JavaScriptCore de WebKit (jsc
) como intérprete regular desde la línea de comandos. Y esto es sin necesidad de tener acceso a una Mac. En muchas plataformas (por ejemplo, x86 y x86_64), este intérprete vendrá con un compilador JIT.
Por lo tanto, con casi ninguna compilación, tendrá a su disposición tres de los motores de JavaScript de alto peso.
Apéndice
Una vez que tenga las cosas instaladas, puede simplemente crear archivos con la línea #!/usr/bin/js
shebang y las cosas simplemente funcionarán:
$ 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!
$
Estoy buscando programación de Javascript sin un navegador. Quiero ejecutar scripts desde la línea de comandos de Linux o Mac OS X, al igual que ejecutamos cualquier otro lenguaje de scripting (ruby, php, perl, python ...)
$ javascript my_javascript_code.js
Miré en mono araña (Mozilla) y v8 (Google), pero ambos parecen estar incrustados.
¿Alguien usa JavaScript como lenguaje de scripting para ser ejecutado desde la línea de comando?
Si alguien tiene curiosidad por qué estoy investigando esto, he estado hurgando en node.js. El rendimiento de node.js me hace preguntarme si JavaScript puede ser un lenguaje de scripts viable para procesar datos de gran tamaño.
Bueno, hay JavaScript como OSA , una extensión que proporciona JavaScript como una alternativa a appleScript. Lo he estado usando hace unos 10 años, no sé si todavía funciona con las versiones actuales del sistema operativo
Como nadie lo mencionó: desde Java 1.6, Java JDK también viene incluido con una línea de comandos de JavaScript y REPL.
Está basado en Rhino: https://developer.mozilla.org/en/docs/Rhino
En Java 1.6 y 1.7 el comando se llama jrunscript
( jrunscript.exe
en Windows) y se puede encontrar en la carpeta bin del JDK.
A partir de Java 1.8 se incluye una nueva implementación de JavaScript (Nashorn: https://blogs.oracle.com/nashorn/ )
Entonces en Java 1.8 el comando se llama jjs
( jjs.exe
en Windows)
Encontré esta pregunta relacionada sobre el tema, pero si quieres enlaces directos, aquí están:
- Puede instalar Rhino como otros señalaron. Esta publicación muestra una manera fácil de ponerlo en funcionamiento y cómo alias un comando para invocarlo fácilmente
- Si está en una Mac, puede usar JavaScriptCore, que invoca el motor JavaScript de WebKit. Aquí hay una publicación
- También puede usar el intérprete V8 de Chome / Google. Aquí hay instrucciones
- El JavaScript como OSA es interesante porque te permite (AFAIK) interactuar con aplicaciones de OS X programables como si estuvieras en AppleScript (sin la terrible sintaxis)
Me sorprende que node.js no tenga shell, pero supongo que se parece más a un servidor web de devolución de llamada / evento orientado a epoll / selector, por lo que quizás no necesite el conjunto completo de características de JS, pero No estoy muy familiarizado con su funcionamiento interno.
Como parece estar interesado en node.js y dado que está basado en V8, sería mejor seguir esas instrucciones para configurar un entorno V8 para que pueda tener una base consistente para su programación de JavaScript (espero que JSC y V8 sean en su mayoría lo mismo, pero no estoy seguro).
Encontré este realmente ingenioso JS Engine de ECMAScript de fuente abierta completamente escrito en C llamado duktape
Duktape es un motor de Javascript incrustado, con un enfoque en la portabilidad y la huella compacta.
¡Buena suerte!
Es posible que desee ver a Rhino .
Rhino Shell proporciona una forma de ejecutar scripts de JavaScript en modo batch:
java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]
FWIW, node.js viene con un shell, intente escribir en:
node-repl
una vez que haya instalado node.js para verlo en acción. Es bastante estándar instalar rlwrap para que funcione bien.
He instalado Node.js en un iMac y
node somefile.js
en bash funcionará.
PhantomJS te permite hacer esto también
Sé que esto es viejo, pero también deberías probar Zombie.js . ¡Un navegador sin cabeza que es increíblemente rápido e ideal para probar!
Sé que preguntaste sobre Linux y Mac; Voy a proporcionar la respuesta para Windows, en caso de que otras personas que estén interesadas en Windows encuentren su pregunta.
Windows incluye un motor de Javascript que se puede usar desde la línea de comando.
Todas las versiones de Windows, desde Windows 98, incluyen algo llamado " The Windows Script Host ". Es una forma estándar de Windows para admitir "motores" de scripts. Desde la primera versión, WSH admite JScript, la versión de Javascript de Microsoft. Entre otras cosas, esto significa que, desde una línea de comandos de Windows, puede invocar el nombre de cualquier archivo * .js y se ejecutará en el motor de JScript. (a través de wscript.exe o cscript.exe)
Puede ver esta pregunta: ¿Qué es ProgId o CLSID para el motor de Javascript de IE9 (cuyo nombre en código es "Chakra") para aprender a invocar el motor de Javascript IE9 de mayor rendimiento de cscript.exe.
JSDB , disponible para Linux, Windows y Mac debería ajustarse bastante bien. Utiliza el motor de JavaScript Spidermonkey de Mozilla y parece ser menos complicado de instalar en comparación con node.js (al menos la última vez que probé node.js hace un par de años).
Encontré JSDB de esta interesante lista de shells de JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells
Uso Ubuntu 12.10 y js desde la línea de comandos
Está disponible con mi instalación de java:
el@apollo:~/foo$ java -version
java version "1.6.0_27"
el@apollo:~/foo$ which js
/usr/bin/js
Algunos ejemplos:
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!'' ]
El cielo es el límite, luego sigue adelante.