ventajas tutorial funciona español ejemplos desventajas definicion como caracteristicas javascript

tutorial - Shell interactivo de JavaScript con finalización



javascript tutorial (6)

¿No es Rhino Shell lo que estás buscando?

Para la depuración y las pruebas estoy buscando un shell de JavaScript con finalización automática y, si es posible, introspección de objetos (como ipython). El JavaScript Shell en línea es realmente agradable, pero estoy buscando algo local, sin la necesidad de un navegador.

Hasta ahora he probado el intérprete de JavaScript independiente rhino, spidermonkey y google V8. Pero ninguno de ellos tiene finalización. Al menos Rhino con jline y spidermonkey tienen algún tipo de historial de comandos mediante la tecla arriba / abajo, pero nada más.

¿Alguna sugerencia?

Esta pregunta fue hecha nuevamente aquí . Puede contener una respuesta que está buscando.



Rhino Shell desde 1.7R2 tiene soporte para completarse también. Puede encontrar más información aquí .


En Windows, puede ejecutar este archivo desde el símbolo del sistema en cscript.exe y proporciona un shell interactivo simple. Sin terminación.

// shell.js // ------------------------------------------------------------------ // // implements an interactive javascript shell. // // from // http://kobyk.wordpress.com/2007/09/14/a-jscript-interactive-interpreter-shell-for-the-windows-script-host/ // // Sat Nov 28 00:09:55 2009 // var GSHELL = (function () { var numberToHexString = function (n) { if (n >= 0) { return n.toString(16); } else { n += 0x100000000; return n.toString(16); } }; var line, scriptText, previousLine, result; return function() { while(true) { WScript.StdOut.Write("js> "); if (WScript.StdIn.AtEndOfStream) { WScript.Echo("Bye."); break; } line = WScript.StdIn.ReadLine(); scriptText = line + "/n"; if (line === "") { WScript.Echo( "Enter two consecutive blank lines to terminate multi-line input."); do { if (WScript.StdIn.AtEndOfStream) { break; } previousLine = line; line = WScript.StdIn.ReadLine(); line += "/n"; scriptText += line; } while(previousLine != "/n" || line != "/n"); } try { result = eval(scriptText); } catch (error) { WScript.Echo("0x" + numberToHexString(error.number) + " " + error.name + ": " + error.message); } if (result) { try { WScript.Echo(result); } catch (error) { WScript.Echo("<<>>"); } } result = null; } }; })(); GSHELL();

Si lo desea, puede aumentar eso con otras bibliotecas de utilidades, con un archivo .wsf. Guarde lo anterior en "shell.js" y guarde lo siguiente en "shell.wsf":

<job> <reference object="Scripting.FileSystemObject" /> <script language="JavaScript" src="util.js" /> <script language="JavaScript" src="shell.js" /> </job>

... donde util.js es:

var quit = function(x) { WScript.Quit(x);} var say = function(s) { WScript.Echo(s); }; var echo = say; var exit = quit; var sleep = function(n) { WScript.Sleep(n*1000); };

... y luego ejecuta shell.wsf desde la línea de comando.


editar : después de usar el nodo REPL un poco más, descubrí que esta evaluación es demasiado positiva. Existen algunos problemas graves con su implementación, como la imposibilidad de eliminar el texto eliminado, problemas con las líneas de edición que superan el ancho de la terminal y algunos otros problemas. Podría ser mejor usar rinoceronte.

El node.js REPL ( node-repl en un sistema con nodo instalado) es el mejor shell de contexto de sistema basado en terminal que he visto hasta ahora. Lo estoy comparando con el rinoceronte y el shell v8 incorporado. Proporciona el historial de finalización de tabulación y edición de línea, así como la coloración de sintaxis de las evaluaciones. También puede importar módulos CommonJS , o al menos los módulos implementados por nodo.

Lo malo es que tienes que construir un nodo. Esto no es un gran problema, ya que la creación de aplicaciones funciona, pero podría ser un desafío si normalmente no haces tales cosas.


jslibs (un tiempo de ejecución de javascript independiente) también podría ser adecuado para este propósito.