Los 10 mejores Frameworks de node.js para el 2019

Santiago Quinteros - CEO & CTO - Software on the road
By:
Santiago Quinteros

Estoy cansado de leer artículos que afirman decir cuál es el mejor framework de nodes.js basado en opiniones sesgadas o patrocinios (sí si, es real)

Así que aquí están los frameworks de node.js clasificados por descargas diarias, los datos fueron tomados del propio npmjs.com (perdón yarn).

youtube: P0Xk8UhawEQ

Tabla de contenido

Qué es un framework node.js?

Cómo elegir un framework node.js para mi aplicación ?

Debes considerar principalmente 2 cosas:

  1. La escalabilidad y la robustez del framework

  2. Si te sientes cómodo con el proceso de desarrollo.

Independientemente de la escalabilidad y la robustez, cada framework de node.js se construye sobre el módulo http.

Algunos de estos frameworks añaden demasiadas cosas y eso tiene un gran impacto en el rendimiento del servidor.

En mi opinión, trabajar con un framework "pelado" como Express.js o Fastify.js es lo mejor cuando el servicio que se está desarrollando es pequeño en la lógica del negocio pero necesita ser altamente escalable.

Por otro lado, si estás desarrollando una aplicación de tamaño medio, es mejor ir con un framework de trabajo que te ayude a tener una estructura clara como next.js o loopback.

No hay una respuesta sencilla a la pregunta, es mejor que eches un vistazo a cómo declarar las rutas de la API en cada uno de los frameworks de esta lista y decidas por ti mismo.

10. Adonis

Adonis.js es un framework del nodo MVC (Modelo-Vista-Controlador).js capaz de construir un API Rest con autenticación JWT y acceso a la base de datos.

De qué trata este framework?

Lo bueno es que el framework Adonis.js viene con una CLI para crear el bootstrap de las aplicaciones.

$ npm i -g @adonisjs/cli
$ adonis nuevas tareas de adonis
$ adonis serve --dev

La típica aplicación de Adonis tiene una estructura MVC, así no pierdes el tiempo pensando cómo deberías estructurar tu servidor web.

Algunas aplicaciones construidas con Adonis pueden ser encontradas aquí.

9. Plumas

Feather.js es un framework de trabajo node.js que promete ser una capa API REST y en tiempo real para aplicaciones modernas.

Vean lo que es capaz de hacer!

Este es todo el código que necesitas para configurar tu API REST + conexión de WebSockets en tiempo real gracias al plugin socket.io

const feathers = require('@feathersjs/feathers');
const express = require('@feathersjs/express');
const socketio = require('@feathersjs/socketio');
 
const memory = require('feathers-memory');
 
// Crea una aplicación compatible con Express Feathers
const app = express(feathers());
 
// Analizar cuerpos HTTP JSON
app.use(express.json());
// Analizar parámetros codificados en URL
app.use(express.urlencoded({ extended: true }));
// Agregar soporte API REST
app.configure(express.rest());
// Configurar las API en tiempo real de Socket.io
app.configure(socketio());
// Registrar un servicio de mensajes con paginación
app.use('/messages', memory({
  paginate: {
    default: 10,
    max: 25
  }
}));
// Registra un mejor manejador de errores que el predeterminado Express
app.use(express.errorHandler());
 
// Añade cualquier nueva conexión en tiempo real al canal "todo el mundo
app.on('connection', connection => app.channel('everybody').join(connection));
// Publicar todos los eventos en el canal "todo el mundo".
app.publish(data => app.channel('everybody'));
 
// Iniciar el servidor
app.listen(3030).on('listening', () =>
  console.log('Feathers server listening on localhost:3030')
);

Bastante dulce verdad?

Estas son algunas aplicaciones [creadas con feathers.js.] (https://github.com/feathersjs/awesome-feathersjs#projects-using-feathers)

8. Sails

Sails.js Ye’ olde node.js framework

Con 7 años de madurez, este es un framework web node.js probado en la batalla que definitivamente deberías revisar!

Véanlo en acción

Sails.js viene con una herramienta CLI para ayudarte a empezar en sólo 4 pasos

$ npm install sails -g
$ sails new test-project
$ cd test-project
$ sails lift 

7. Loopback

Respaldado por IBM, Loopback.io es un framework node.js de grado empresarial, utilizado por empresas como GoDaddy, Symantec, la propia IBM.

Incluso ofrecen soporte a largo plazo (LTS) por 18 meses!

Este framework viene con una herramienta CLI para andamiar su servidor node.js

$ npm i -g @loopback/cli

Luego para crear un proyecto

$ lb4 app

Así es como se ve una ruta API y un controlador:

import {get} from '@loopback/rest';

export class HelloController {
  @get('/hello')
  hello(): string {
    return 'Hello world!';
  }
}

6. Fastify

Fastify.io](https://www.fastify.io) es un framework node.js que está diseñado para ser el reemplazo de express.js con un 65% de mejor rendimiento.

Muéstrame el código

// Require the framework and instantiate it
const fastify = require('fastify')({
  logger: true
})

// Declarar una ruta
fastify.get('/', (request, reply) => {
  reply.send({ hello: 'world' })
})

// Corre el servidor!
fastify.listen(3000, (err, address) => {
  if (err) throw err
  fastify.log.info(`server listening on ${address}`)
})

Y eso es todo!

Me encanta la simplicidad y la reminiscencia a Express.js de Fastify.js, definitivamente es el framework a seguir si el rendimiento es un problema en su servidor.

5. Restituir

Restify afirma ser el futuro de los frameworks web de Node.js.

Este framework es utilizado en la producción por NPM, Netflix, Pinterest y Napster.

Ejemplo de código

Configurar un servidor de Restify.js es tan simple como esto

const restify = require('restify');

function respond(req, res, next) {
  res.send('hello ' + req.params.name);
  next();
}

const server = restify.createServer();
server.get('/hello/:name', respond);
server.head('/hello/:name', respond);

server.listen(8080, function() {
  console.log('%s listening at %s', server.name, server.url);
});

4. Nest.js

Un framework relativamente nuevo de node.js, Nest.js tiene una arquitectura similar a Angular.io, así que si estás familiarizado con ese framework de trabajo frontal, encontrarás éste bastante fácil de desarrollar también.

Ejemplo

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setViewEngine('hbs');
  await app.listen(3000);
}
bootstrap();

3. Hapi

Uno de los grandes frameworks de 3 nodes.js, hapi.js tiene un ecosistema de bibliotecas y plugins que hace que el framework de trabajo sea altamente personalizable.

Aunque nunca he usado hapi.js en producción, he estado usando su biblioteca de validación Joi.js durante años.

Creando un servidor

Un servidor web hapi.js se ve así

const Hapi = require('@hapi/hapi');

const init = async () => {

  const server = Hapi.server({
      port: 3000,
      host: 'localhost'
  });

  await server.start();
  console.log('Server running on %s', server.info.uri);
};

init();

2. Koa

Koa es un framework web diseñado por el equipo que está detrás de Express.js el framework node.js más famoso y utilizado.

Koa pretende ser una base más pequeña, más expresiva y más robusta para las aplicaciones web y las API que express.js.

Mediante el aprovechamiento de los generadores, Koa le permite deshacerse de las llamadas de retorno y aumentar en gran medida el manejo de errores.

Koa no incluye ningún middleware en el núcleo y proporciona un elegante conjunto de métodos que hacen que los servidores de escritura sean rápidos y agradables.

Ejemplo

const Koa = require('koa'); 
const app = new Koa(); 
app.use(async ctx => { 
  ctx.body = 'Hello World'; 
}); 
app.listen(3000);

Ejemplo

const Koa = require('koa'); 
const app = new Koa(); 
app.use(async ctx => { 
  ctx.body = 'Hello World'; 
}); 
app.listen(3000);

1. Express

Express.js es definitivamente el rey de los frameworks node.js, alcanzará la increíble marca de 2 millones de descargas diarias a finales de 2019.

A pesar de ser un framework de trabajo tan antiguo, Express.js es mantenido activamente por la comunidad y es utilizado por grandes empresas como User, Mulesoft, IBM, etc.

Ejemplo

Sólo añádelo a tu proyecto node.js

$ npm install express

Entonces declara algunas rutas de la API

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, () => console.log(`Example app listening on port ${port}!`))

Y eso es todo lo que necesitas para empezar a usarlo!

Conclusión

Hay toneladas de frameworks node.js por ahí, lo mejor que puedes hacer es ir y probarlos todos hasta que encuentres los que se adapten a tus necesidades.

Personalmente, prefiero Express.js porque, a través de estos 6 años de desarrollo de node.js, construyo un fuerte conocimiento de buenos patrones arquitectónicos, todo basado en el ensayo y el error.

Pero eso no significa que tengas que hacer lo mismo, aquí están todos los secretos de un buen proyecto framework de express.js.

Ahora dime, cuál es tu framework de node.js favorito?

Envíame un tweet a @santypk4, vamos! Quiero saber qué está usando la gente, no quiero quedarme atrás!

Get the latest articles in your inbox.

Join the other 2000+ savvy node.js developers who get article updates. You will receive only high-quality articles about Node.js, Cloud Computing and Javascript front-end frameworks.


santypk4

CEO at Softwareontheroad.com