Node.js v0.6.19 Manual & Documentación
Tabla de Contenidos
REPL#
Read-Eval-Print-Loop (REPL) está disponible como un programa independiente y fácilmente puede incluirse en otros programas. REPL proporciona una forma interactiva de ejecutar JavaScript y ver los resultados. Puede ser utilizado para la depuración, pruebas, o simplemente para probar cosas.
Debe ejectuarlo en node
sin singún argumento desde la línea de comandos, debe posicionarse
dentro de REPL. Posee la edición simple de líneas de emacs.
mjr:~$ node
Type '.help' for options.
> a = [ 1, 2, 3];
[ 1, 2, 3 ]
> a.forEach(function (v) {
... console.log(v);
... });
1
2
3
Para editores avanzados, inice node con la variable de entorno NODE_NO_READLINE=1
.
Se iniciará la configuración de REPL en la terminal y l permite utilizarlo con rlwrap
.
Por ejemplo, puede añadir lo siguiente al fichero bashrc:
alias node="env NODE_NO_READLINE=1 rlwrap node"
repl.start([prompt], [stream], [eval], [useGlobal], [ignoreUndefined])#
Inicia REPL con el prompt
como el prompt y el stream
para todo los procesos de I/O (Entrada/Salida).
prompt
es opcional y por omisión es >
. stream
es opcional y por omisión es
process.stdin
. eval
is optional too and defaults to async wrapper for
eval()
.
If useGlobal
is set to true, then the repl will use the global object,
instead of running scripts in a separate context. Defaults to false
.
If ignoreUndefined
is set to true, then the repl will not output return value
of command if it's undefined
. Defaults to false
.
You can use your own eval
function if it has following signature:
function eval(cmd, callback) {
callback(null, result);
}
Multiples REPLs pueden iniciar con una misma instancia de node. Cada uno de ellos comparten el objeto global, pero tendrán un único proceso de I/O.
Acontinuación un ejemplo que inicia REPL en stdin, un socket en Unix, y un socket en TCP:
var net = require("net"),
repl = require("repl");
connections = 0;
repl.start("node via stdin> ");
net.createServer(function (socket) {
connections += 1;
repl.start("node via Unix socket> ", socket);
}).listen("/tmp/node-repl-sock");
net.createServer(function (socket) {
connections += 1;
repl.start("node via TCP socket> ", socket);
}).listen(5001);
Ejecutando el programa desde la línea de comando iniciará REPL en stdin. Otros
clientes REPL pueden conectarse a través de un socket Unix o TCP. telnet
es útil
para la conexión de sockets TCP, y socat
puede ser conectar ambos sockets Unix y
TCP.
Al iniciar REPL desde un socket Unix basado en una instancia de stdin, puede conectarse a un proceso en ejecución de node sin reiniciar el mismo.
Características de REPL#
Dentro de REPL, presione Control+D para salir. Expresiones de varias líneas pueden ser ingresadas.
La variable especial _
(underscore) contiene el resultado de la última expresión.
> [ "a", "b", "c" ]
[ 'a', 'b', 'c' ]
> _.length
3
> _ += 1
4
REPL proporciona acceso a cualquier variable de ámbito global. Puede exponer
una variable a REPL explícitamente y asignarle a un contexto de objeto asociado
con cada REPLServer
. Por ejemplo:
// repl_test.js
var repl = require("repl"),
msg = "message";
repl.start().context.m = msg;
Los sucesos en el objeto context
aparecen como local en REPL:
mjr:~$ node repl_test.js
> m
'message'
Hay algunos comandos especiales de REPL:
.break
- Si bien ingresar expresiones en varias líneas, a veces, pueden perderse o simplemente no son tomados en cuenta..break
comenzará de nuevo..clear
- Restablece el objetocontext
a un objeto vacío y borra cualquier expresión de varias líneas..exit
- Cierra los stream de I/O, que hará que REPL termine..help
- Muestra la lista de comandos especiales..save
- Guarda la sesión actual de REPL en un fichero.save ./file/to/save.js
.load
- Carga un fichero en la sesión actual de REPL..load ./file/to/load.js
Lo siguiente son combinaciones del teclado para el uso especial de REPL:
<ctrl>C
- Similar a la teclabreak
. Termina el comando actual. Presione dos veces en la línea para forzar la salida.<ctrl>D
- Similar a la tecla.exit
.