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?
- Adonis.js (1,290 Descargas diarias)
- Feathersjs.js (5,417 Descargas diarias)
- Sails.js (5,540 Descargas diarias)
- Loopback.io (7,413 Descargas diarias)
- Fastify.js (19,986 Descargas diarias)
- Restify.js (23,836 Descargas diarias)
- Next.js (23,381 Descargas diarias)
- Hapi.js (48,248 Descargas diarias)
- Koa.js (61,147 Descargas diarias)
- Express.js (1,940,277 Descargas diarias)
- Conclusion
Qué es un framework node.js?
Cómo elegir un framework node.js para mi aplicación ?
Debes considerar principalmente 2 cosas:
-
La escalabilidad y la robustez del framework
-
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!