En esta página:
La versión 4 de Node JS ya fue liberada. Esta versión estable nos trae un montón de novedades, sobre todo agrega propiedades de Ecma Script 6, como las Promesas (Promises) y muchas otras propiedades.
Bueno vamos con las novedades:
Cadena de Textos
Si alguna vez intentaste crear una cadena de varias líneas en JavaScript, es probable que termináras haciendo algo similar a esto:
1 2 3 4 5 6 7 |
var mensaje = [ 'El arroz con leche es muy delicioso', 'Arriba Perú', 'El gato esta sobre la TV' ].join('\n'); |
Aunque esto funciona solo para una pequeña cantidad de texto, se complica por un par de frases. Por lo tanto, un programador inteligente se le ocurrió un truco de varias líneas:
1 2 3 4 5 6 7 8 |
var multiline = require('multiline'); var mensaje = multiline(function () {/* El arroz con leche es muy delicioso Arriba Perú El gato esta sobre la TV */}); |
Por suerte, Ecma Script 6 incorpora cadenas en el template:
1 2 3 4 5 6 7 |
var mensaje = ` El arroz con leche es muy delicioso Arriba Perú El gato esta sobre la TV `; |
Además, ES6 nos trae la interpolación de un string:
1 2 3 4 5 6 7 8 9 10 11 |
var nombre = 'Maximiliano'; // deja de hacer esto ... var mensaje = 'Hola ' + name + ', El gato esta sobre la TV?'; var mensaje = ['Hola ', name, ', El gato esta sobre la TV?'].join(''); var mensaje = require('util').format('Hola %s, El gato esta sobre la TV?', name); // y en lugar haz esto ... var mensaje = `Hola ${name}, El gato esta sobre la TV?`; |
Clases
Para definir una clase en Ecma Script 5 era algo extraño y se necesitaba de tiempo para acostumbrarse:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
var Postre = function (nombre) { this._nombre = nombre; }; Postre.prototype.unSabor = function () { console.log('*scratch*'); }; Object.defineProperty(Postre.prototype, 'nombre', { get: function () { return this._nombre; } }); var ArrozconLeche = function (nombre) { Postre.call(this, nombre); }; require('util').inherits(ArrozconLeche, Postre); ArrozconLeche.prototype.unSabor = function () { Postre.prototype.unSabor.call(this); console.log('delicioso'); }; |
Por suerte, ahora podemos utilizar la nueva sintaxis ES6 en NodeJS 4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class Postre { constructor(nombre) { this._nombre = nombre; } sayHello() { console.log('*scratch*'); } get nombre() { return this._nombre; } } class ArrozconLeche extends Postre { constructor(nombre) { super(nombre); } sayHello() { super.sayHello(); console.log('delicioso'); } } |
Puedes extender una clase dentro de otra clase, llamar a la súper clase con sus propiedades.
Uso de Flechas(arrows) en nuestras Funciones
Los desarrolladores normalmente trabajaban de 2 maneras:
1 2 3 4 5 6 7 8 |
ArrozconLeche.prototype.notifyListeners = function () { var self = this; this._listeners.forEach(function (listener) { self.notifyListener(listener); }); }; |
o:
1 2 3 4 5 6 7 |
ArrozconLeche.prototype.notifyListeners = function () { this._listeners.forEach(function (listener) { this.notifyListener(listener); }.bind(this)); }; |
Ahora se puede utilizar dentro de las funciones una flecha declarativa (arrow):
1 2 3 4 5 6 7 |
ArrozconLeche.prototype.notifyListeners = function () { this._listeners.forEach((listener) => { this.notifyListener(listener); }); }; |
Objetos Literales
Al usar objetos literales, ahora podemos emplear un pequeño atajo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var precio = 10, postre = 'Mazamorra Morada', stock = 32; // En lugar de esto var postre = { precio: precio, nombre: nombre, stock: stock }; // Haz esto var postre = { precio, nombre, stock }; |
Promises (Promesas)
En vez de depender de las bibliotecas de terceros para crear promises, ahora se puede utilizar promises nativas:
1 2 3 4 5 6 7 8 9 10 |
var prom1 = new Promise(function (resolve, reject) {}); var prom2 = Promise.resolve(20); var prom3 = Promise.reject(new Error()); var prom4 = Promise.all(prom1, prom2); var prom5 = Promise.race(prom1, prom2); // y obviamente: prom1.then(() => {}).catch(() => {}); |
Métodos en un String
Tenemos una manera mas útil de repetir un metodo:
1 2 3 4 5 6 7 8 9 |
// reemplazar indexOf () en determinado número de casos: name.startsWith('a') name.endsWith('c'); name.includes('b'); // repetimos el string de arriba tres veces: name.repeat(3); |
Conclusión
Node JS 4 trae aún más funcionalidades de Ecma Script 6, estos novedades que mencione son solo las mas resaltantes.
Hay muchas más características del lenguaje (por ejemplo mapas/conjuntos, símbolos y generadores, por mencionar unos cuantos más).
Espero les sirva de mucho este articulo !
Gracias por su atención