Prácticas
Práctica 01
El objetivo es presentar algunas características del interprete de Node.js: node
.
Crea el directorio $HOME/code/nodejs/node01
, ingresa a él y crea el archivo .node-version
para indicar a nodenv la
versión de Node.js a usar :
antonio@servidor:~ $ mkdir -p $HOME/code/nodejs/node01
antonio@servidor:~ $ cd $HOME/code/nodejs/node01
antonio@servidor:~/code/nodejs/node01 $ echo node-v6.11.2-linux-x64 > .node-version
Puedes verificar el uso de .node-version
por parte de nodenv con nodenv version
.
- Para acceder al interprete o iniciar sesión en el interprete de Node.js y poder ejecutar alguna instrucción de JavaScript:
node
,node -i
o biennode --interactive
. - Para salir del interprete se ejecuta
.exit
. Para evaluar código de JavaScript desde el shell,
node --eval
ynode --print
:alumno@servidor:~ $ node --eval 'console.log("¡Hola mundo!")' ¡Hola mundo! alumno@servidor:~ $ node --eval 'console.log(console)' Console { log: [Function: bound ], info: [Function: bound ], warn: [Function: bound ], error: [Function: bound ], dir: [Function: bound ], time: [Function: bound ], timeEnd: [Function: bound ], trace: [Function: bound trace], assert: [Function: bound ], Console: [Function: Console] }
Para obtener una lista de las opciones disponibles en V8 (el motor de ejecución de JavaScript en Node.js):
node --v8-options
.Posiblemente la opción más sobresaliente sea
--harmony
(sinónimo de--es_staging
) que permite activar las características aún pendientes de ser consideradas estables para el soporte de ECMAScript 2015.alumno@servidor:~ $ node --harmony --use_strict --eval 'let f = function() { return "¡Hola mundo!"; }; console.log(f());' ¡Hola mundo!
Una vez en el interprete de Node.js puedes hacer uso del comando
.help
para obtener una lista de comandos propios del interprete:.break
o.clear
: para detener la captura de código de JavaScript en el interprete..exit
: salir del interprete y regresar el shell..save archivo.js
: guarda la actual sesión del interprete enarchivo.js
. La sesión puede ser cargada o restaurada con.load
..load archivo.js
: cargaarchivo.js
en la actual sesión del interprete.
Práctica 02
Crea un directorio donde residirá tu proyecto, por ejemplo
$HOME/code/nodejs/node02
, y en él configura la versión de Node.js a usar:alumno@servidor:~ $ mkdir -p $HOME/code/nodejs/node02 alumno@servidor:~ $ cd $HOME/code/nodejs/node02 alumno@servidor:~/code/nodejs/node02 $ echo node-v6.11.2-linux-x64 > .node-version alumno@servidor:~/code/nodejs/node02 $ nodenv version node-v6.11.2-linux-x64 (set by /home/alumno/code/nodejs/node02/.node-version)
Inicializa el proyecto con
npm init
:alumno@servidor:~/code/nodejs/node02 $ npm init --yes
Ante esto se creará el archivo
package.json
:{ "name": "node02", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Crea el archivo
index.js
con el siguiente contenido:exports.amap = function(f, xs) { var ys = []; for (var i = 0; i < xs.length; i++) { ys.push(f(xs[i])); } return ys; }; exports.afilter = function(f, xs) { var ys = []; for (var i = 0; i < xs.length; i++) { if (f(xs[i])) { ys.push(f(xs[i])); } } return ys; }; exports.areduce = function(f, a, xs) { var b = a; for (var i = 0; i < xs.length; i++) { b = f(b, xs[i]); } return b; };
Inicia el REPL con el comando
node
y carga el módulo:alumno@servidor:~/code/nodejs/node02 $ node > var node02 = require('./index.js'); undefined > node02.amap( function(x) { return [(x - 1), x, (x + 1)]; }, [3, 4, 5] ); [ [ 2, 3, 4 ], [ 3, 4, 5 ], [ 4, 5, 6 ] ] > node02.afilter( function(x) { return x % 2 === 0; }, [3, 4, 5] ); [ 4 ] > node02.areduce( function(x, y) { return x * y; }, 1, [3, 4, 5] ); 60