2009-05-13 15 views
6

Teniendo en cuenta la necesidad de escribir utilidades de línea de comandos para realizar tareas comunes, como la posibilidad de subir archivos a un servidor de FTP remoto, descarga de datos desde una base de datos MySQL remota etc.Javascript para utilidades de línea de comandos

¿Es práctico usar JavaScript para este ¿tipo de cosa? Sé que hay intérpretes de JavaScript que se pueden ejecutar desde la línea de comandos, pero ¿hay bibliotecas para cosas como FTP y acceso a la base de datos de la forma en que hay, por ejemplo, ¿Java? Si es así, ¿cuál es el mejor lugar para buscarlos? (Las búsquedas de Google con palabras clave siempre parecen devolver muchas páginas de cosas específicas del navegador.)

¿Existe alguna forma de empaquetar un programa de JavaScript como un ejecutable independiente en Windows?

Actualización: He decidido que Python es una mejor herramienta para este tipo de trabajo, pero las respuestas a la pregunta original siguen siendo buenas.

Respuesta

6

Node.js es, con mucho, el mejor entorno para ejecutar la no navegador JS. He usado Rhino y SpiderMonkey, y hay una gran diferencia en todo, desde los conceptos básicos, cómo se manejan los errores hasta el tamaño de la comunidad que usa la herramienta. Se crea nodo para JS "del lado del servidor": creación de aplicaciones de servidor en JS. Es grandioso para esto Pero funciona igual de bien para construir herramientas de línea de comando.

El administrador de paquetes de NPM (incluido con Node) proporciona un buen directorio global para buscar e instalar paquetes. Funciona mucho mejor que otros idiomas, como equivalentes PECL/pera/CPAN/etc Varias herramientas de alta calidad como JSHint, El lenguaje de plantillas Jade, y el compilador CoffeeScript están ya disponibles a través de la NPM/Nodo:

npm install -g jshint, coffee-script, jade 
jshint my_code.js 
jade <my.jade> my.html 

Para Analizando args, hay paquetes como commander.js. Actualmente uso una versión muy extendida de Commander en mi herramienta de línea de comandos underscore-cli.

Para jugar con JSON o para hacer trabajos JS en línea de comandos (similar a "perl -pe"), echa un vistazo a underscore-cli - Es una herramienta muy poderosa para procesar datos JSON, procesar plantillas de subrayado y ejecutar expresiones JS del línea de comando. Lo uso para 1001 cosas diferentes que de otra manera serían realmente molestas de lograr.

+0

¿Por qué dices que npm es mejor que cpan? –

+0

Específico para CPAN, una queja es que quiere que pase por una "configuración" de 15 pasos antes de usar ... simplemente tonto. Desde una perspectiva de usabilidad/CLI, npm es más agradable. En cuanto a los deltas filosóficos más sustanciales ... npm maneja las dependencias recursivas de manera bastante diferente. Con PERL (y ruby ​​y la mayoría de los lenguajes de scripting), tiene una ruta de módulo global y se hace complicado usar los módulos A y B si cada uno requiere una versión diferente del módulo C. npm maneja esto bien, aunque descarga la dependencia transitiva completa cierre cada vez que instale un módulo (también tonto). –

+0

Ok, gracias por el fondo. Solo he usado python pip extensivamente, npm una o dos veces. Sin embargo, cpan siempre fue bien considerado por la multitud de slashdot. –

7

Puede utilizar Rhino para compilar Javascript en código de bytes Java y obtener acceso a todas las bibliotecas de Java.

O puede usar JScript.net y obtener acceso a las bibliotecas .net. .net incluye un jsc.exe que produce exe-files.

Ambos requieren que se instale el marco respectivo para poder ejecutar.

1

Una forma es escribir estas utilidades como aplicaciones de AIR: se pueden escribir en JavaScript y no necesitan tener una IU. Tienen acceso a la línea de comandos, y existen bibliotecas de ActionScript 3 que pueden manejar FTP, etc. Estas API de ActionScript pueden invocarse desde JS, en aplicaciones de AIR. Las aplicaciones de AIR también tienen acceso a una base de datos sqlite.

8

¿Ejecutable autónomo?

Por cierto, si hace la pregunta, no estoy seguro de saberlo, pero Windows Script Host, incluido en Windows, le permite ejecutar archivos .js desde la línea de comandos. Tu javascript no será un ejecutable, seguirá siendo un script, un archivo de texto. La secuencia de comandos se ejecuta dentro de cscript.exe, que es proporcionado por WSH. No se requiere compilación. Quizás sabías todo eso.

Utilizo Javascript de esta manera para varias utilidades en Windows.

Creo que su instinto está en la disponibilidad de las bibliotecas. Usted está tipo de en su propio para encontrar todas esas cosas. Aunque, una vez que los encuentra, no es difícil empaquetar bibliotecas de Javascript como componentes COM y permitir su reutilización desde cualquier lugar. See here for an example de empaquetar la biblioteca Google Diff/Patch/Match Javascript en COM.

Addendum: Una vez que hay un poco de código disponible dentro de COM, puede ser consumido por cualquier Javascript que se ejecute en la máquina. Algunos ejemplos de objetos COM disponibles para los scripts de JavaScript que se ejecutan en WSH:

  • MSXML2.XMLHTTP object - utilizados en AJAX, pero puede ser utilizado para cualquier comunicación HTTP. También hay un objeto para el motor XSLT para que pueda hacer transformaciones desde el script.
  • Excel.Application - le permite abrir hojas de cálculo de Excel y automatizarlas desde Javascript.
  • Communicator.UIAutomation - automatizar MS Communicator (enviar IM a través de secuencia de comandos)
  • COM objects for Google Earth.
  • SlowAES - una implementación completamente Javascript del cifrado AES.
4

Rhino se incluye con JDK 1.6, jrunscript.exe en el directorio bin le permitirá ejecutar el Javascript que desee. Dado que se ejecuta bajo Java, usted obtiene acceso a cualquier biblioteca Java que pueda tener.

Lo usamos ampliamente desde la línea de comandos. Es muy bueno en eso.

1

jslibs es un buen tiempo de ejecución de JavaScript independiente que admite muchas bibliotecas de código abierto tercera parte como zlib, SQLite, NSPR, libiconv, LibTomCrypt, OpenGL, ...

Cuestiones relacionadas