1, 2, 3... ¡Fastify!

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

En mi viaje por el mundo de Node, siempre me pregunto cuánto cuestan mis abstracciones.


Comencé un viaje para escribir un framework HTTP con una sobrecarga extremadamente baja, y nació Fastify. Con su capacidad para alcanzar asombrosas 90k solicitudes/segundo, Fastify puede reducir a la mitad tu factura de servidor en la nube.


En esta charla, te guiaré a través de los conceptos básicos del framework: cómo enrutamiento de solicitudes, escribir pruebas y usar el sistema de plugins.

This talk has been presented at JSNation Live 2020, check out the latest edition of this JavaScript Conference.

FAQ

Fastify es un marco web para Node.js, iniciado por Matteo Collina y Thomas De La Vedo en 2016, diseñado para ofrecer un rendimiento óptimo en producción y una buena experiencia para los desarrolladores.

Fastify se puede instalar usando NPM con el comando: `npm install fastify`.

Matteo recomienda usar Node 14 para aprovechar las nuevas características de ESM (ECMAScript Modules) de Node Core.

Fastify Autoload es un módulo que permite la carga automática de rutas desde un directorio especificado, facilitando la organización y manejo de rutas en aplicaciones Fastify.

Para realizar pruebas unitarias en Fastify, se puede usar la utilidad 'tape'. Las pruebas involucran cargar la aplicación y utilizar funciones como `server.inject` para simular peticiones y verificar respuestas esperadas.

En Fastify se puede implementar la autenticación utilizando JWT (JSON Web Tokens) mediante el módulo `fastify-jwt`, que permite registrar rutas protegidas que verifican tokens para controlar el acceso.

Fastify se diferencia por no seguir un patrón de middleware, sino que utiliza un modelo basado en ciclos de vida con hooks que se activan en etapas específicas de la solicitud, lo que reduce la sobrecarga y mejora la organización del código.

Matteo Collina
Matteo Collina
36 min
18 Jun, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Fastify es un framework web que comenzó en 2016 y es fácil de usar. Admite el registro, dividir la aplicación en archivos separados y cargar rutas automáticamente. Fastify también proporciona autenticación y funcionalidad de inicio de sesión de usuario. Se diferencia de otros frameworks al admitir completamente Async Await y las últimas características de JavaScript. Matteo Collina, el ponente, prefiere Vim y T-Max como su IDE y disfruta de la pizza italiana como su comida reconfortante.
Available in English: 1, 2, 3... Fastify!

1. Introducción a Fastify

Short description:

Soy Matteo Collina, aquí para hablar sobre Fastify. Fastify es un marco web que comenzó en 2016. Instálalo con NPM. Fácil de usar. Construyamos una aplicación simple. Importa Fastify. Usa Node 14. Crea la aplicación. Escucha en el puerto 3000. Servidor iniciado. Ruta no encontrada. Sin registros.

Todos, soy Matteo Collina. Y estoy aquí hoy para hablarles sobre Fastify. Por favor, tómense un momento para seguirme en Twitter, en Matteo Collina. Publico tweets sobre el desarrollo de Node.js y muchas otras cosas. Así que sí, tal vez les parezca interesante.

De todos modos, estamos aquí para hablar sobre Fastify. Esto es, ya saben, todos estamos remotos, todo está distribuido alrededor del mundo. Así que en esta charla, voy a intentar algo que normalmente no hago en el escenario. Así que veamos cómo va. Primero que nada, Fastify es un marco web que Thomas De La Vedo y yo comenzamos en 2016. Y ahora está llegando a la versión principal 3, que se lanzará pronto.

De todos modos, ¿cómo se instala? NPM install Fastify. Y en realidad es muy fácil de usar. Sin embargo, no vamos a hablar mucho al respecto, pero vamos a usarlo para construir una aplicación muy, muy simple. Primero que nada, podemos comenzar teniendo nuestro propio servidor e importando Fastify. Oh, por cierto, amigos, voy a usar Node 14. ¿Por qué? Porque quiero usar las nuevas características de ESM de Node Core. Así que eso es lo que vamos a usar. Podemos hacer import Fastify from Fastify. Luego puedo crear mi aplicación. Y luego puedo hacer app.listen en el puerto 3000. ¡Vaya! OK. Entonces tal vez este servidor. Oh, y VMUse 14. Hey, así que este servidor ha iniciado. Y luego puedo hacer curl y luego, oh, bueno, ruta no encontrada. Sí, no agregamos ninguna. Así que tiene total sentido. Sin embargo, si lo miras, tampoco registró nada.

2. Agregando un Registrador

Short description:

Podemos agregar un registrador configurando logger true. En desarrollo, establece pretty print true para obtener una salida más agradable. El registrador registra dos veces para cada solicitud, cuando entra y cuando sale.

Tal vez solo queramos agregar un poco de un registrador aquí. Lo cual probablemente sea útil. Podemos hacer logger true y podemos iniciarlo nuevamente. Oh, ahora dice servidor escuchando. Registra en una nueva línea. JSON delimitado, utiliza otra biblioteca llamada Pinot para registrar. Aún así, obtenemos alguna salida de ello. Sin embargo, si estamos en desarrollo, lo que realmente puedes hacer es hacer pretty print true solo en desarrollo. Y si hacemos esto, obtendremos una salida un poco más agradable. Ten en cuenta que registra dos veces para cada solicitud, registra cuando una solicitud entra y cuando una solicitud sale. Bastante agradable y práctico.

3. Dividiendo la Aplicación y Usando Fastify Auto-load

Short description:

Dividimos la aplicación en otro archivo llamado app.js. Creamos un complemento de Fastify y agregamos rutas. Podemos usar un módulo llamado Fastify auto-load para cargar rutas desde un archivo separado. Creamos una carpeta de rutas y un archivo hello.js. Copiamos el bloque de código en hello.js y agregamos el complemento. Listo.

Bien, eso es lo básico de nuestra aplicación. Hemos iniciado Fastify. Entonces, lo que queremos hacer ahora es dividirlo porque, ya sabes, no podemos simplemente codificar en un solo servidor. Así que lo que vamos a hacer es crear otro archivo llamado app.js.

Entonces, lo que hacemos, lo hacemos por defecto y luego creamos lo que llamamos un complemento de Fastify. Y mi app. Entonces, app y podemos agregar nuestras rutas aquí. Por ejemplo, obtener barra diagonal y luego asincrónico y luego devolver una palabra baja. Hola, soy una persona de comillas simples. De todos modos, eso es todo. Estamos aquí. Entonces, si reinicio esto y luego ocurre, ¡guau, todavía no funciona! Necesito cargar esto realmente. Entonces, lo que puedo hacer, puedo hacer app register. Puedo usar import porque estamos usando ESM, ¿verdad? Entonces app.js y aquí vamos. Bien, ahora está funcionando. Nuevamente, hemos movido esto a otro archivo pero esto sigue siendo un poco personalizado y un poco más complicado.

Entonces, una de las cosas que podemos hacer es usar un módulo llamado, en lugar de poner rutas en nuestro archivo, en nuestro archivo único, podemos hacer algo un poco mejor. Primero, voy a comentar esto porque lo usaremos más adelante y voy a registrar un módulo que es realmente muy útil. Que se llama Fastify auto-load. Y necesito decirle qué archivo, qué queremos cargar, de hecho. Así que voy a obtener una utilidad que he preparado que se llama dsm y me dará un método join al que simplemente puedo pasar la URL de este archivo actual que es data1 file:// lo que sea y luego puedo concatenarlo con rutas. Ten en cuenta que si quiero hacer algo diferente, ya sabes, sería una lista larga, larga así que no quiero realmente hacer eso. Así que voy a crear una carpeta de rutas y luego, en la carpeta de rutas, voy a crear un archivo hello.js. En mi archivo hello.js, voy a copiar este bloque aquí. Nuevamente, todavía necesito mi complemento aquí. Así que aquí vamos. Y luego podemos hacer esto. Y luego puedo cerrarlo. Bueno, aquí vamos.

4. Registrando FastifyAutoLoad

Short description:

Registramos FastifyAutoLoad para cargar todas las rutas desde un directorio. Si falla, debe ser una función o una promesa. Cometí un error común con el export default y las rutas. Después de importar el archivo, ahora funciona correctamente.

Básicamente, lo que estamos haciendo aquí, es registrar FastifyAutoLoad, que luego se dirige a un directorio, nuestras rutas, y luego todas esas rutas se cargarán. Entonces veamos, si todo esto todavía funciona, se bloqueará. Por supuesto, se bloquea, debe ser una función o una promesa. Entonces, ¿qué hice mal? Porque eso es típicamente muy común que hago algo mal aquí. Así que tengo mi export default aquí y rutas. Espera, está. Entonces este archivo está aquí, servidor, importar app.js, mi app. Estoy importando mi archivo. Aquí vamos. Y está. De nuevo, oh. Vamos a intentarlo. ¡Yay, okay! Querías un nombre de función. De acuerdo, entonces, aquí vamos, hemos iniciado esto, y ahora todo sigue funcionando bien. De acuerdo.

5. Creando Archivos Adicionales y Escribiendo Pruebas Unitarias

Short description:

Podemos crear abc-d.js y usar Fastify Autoload para cargarlo desde la carpeta abc. Para escribir una prueba unitaria, usamos la utilidad tape, Fastify y nuestra aplicación. Probamos la función hello world usando una función nothing y DEEP equal. Creamos un servidor Fastify, registramos el complemento App y llamamos al servidor usando server.inject. Verificamos la respuesta JSON para el mensaje hello world. Finalmente, cerramos el servidor y ejecutamos la prueba.

Lo que podemos hacer ahora es crear un poco más de cosas. Por ejemplo, puedes crear abc-d.js, por ejemplo. Entonces, en este archivo aquí, puedes ver que hemos creado un poco de una estructura de directorios. Y luego hello from D. Ahora, si vamos aquí y reiniciamos, puedes ver abc-d, oh abc, y luego eso es d.js. Como puedes ver, usando Fastify Autoload, podemos, de hecho, oh, simplemente, ¡Yay! Al usar Fastify Autoload, podemos abrir este archivo y bajar hasta, y cargarlo desde el directorio abc-d, desde la carpeta abc.

Bien, avancemos un paso más. Ahora, ¿qué pasa si quiero escribir una prueba unitaria, por ejemplo? Creemos un nuevo archivo test.js. Ahora, voy a usar una utilidad muy simple, una utilidad muy simple que, aquí vamos. Una utilidad muy simple que en realidad es muy, muy útil, que se llama tape. Soy fan de las herramientas de prueba muy fáciles. Así que no sé, espero que a ti también te gusten pero si no, puedes usar lo que quieras. Así que necesito tape, necesito Fastify, y luego necesitaré mi aplicación. Ten en cuenta que en realidad no estoy creando el servidor sino que estoy cargando mis aplicaciones de una manera separada. Entonces, lo que puedo hacer es, por ejemplo, cargar el hello world. Bueno, puedo probar hello world. Así que quiero probar mi función hello world, así que estoy usando una función nothing aquí y luego estoy usando DEEP equal. Aquí vamos. Y luego podemos crear un servidor, que es mi servidor Fastify y luego podemos registrar. Adivina qué vamos a hacer. Voy a pasar App aquí, que es nuestro complemento Fastify. Así que voy a poner ese complemento en luego lo que necesito, lo que podemos hacer ahora es esperar, podemos llamar a nuestro servidor usando nuestra utilidad interna de testing. Entonces podemos hacer await server.inject y slash, que es nuestra ruta. Y luego podemos hacer deep equal, res json y luego especificar el hecho de que queremos hello world. Aquí vamos. Y luego lo que necesitamos hacer, debemos recordar cerrar nuestro servidor. Así que estamos haciendo esto. Ahora podemos ejecutar la prueba y, oh, ¿dónde puse esto? Prueba. Oh, sí.

6. Creando Rutas Protegidas y Autenticación

Short description:

Si estás usando ESM, recuerda pasar una extensión. Nuestra prueba está pasando y funcionando bien. Agregamos ABCD y probamos ABC. Ahora creamos una carpeta protegida y un archivo index.js. Configuramos el sistema de autenticación importando JWT y registrando el complemento. Agregamos un Decorador para autenticar nuestro sistema usando un bloque try-catch para verificar el token JWT.

Entonces, si estás usando ESM, ¿necesitamos pasar una extensión, verdad? Recuerda eso. De acuerdo. Así que ves que nuestra prueba está pasando. Eso debería ser profundamente equivalente. Así que está funcionando bien. Ahora también podemos agregar una cosa más aquí y sobre ABCD como queríamos, probar ABC. Así que lo que podemos hacer, ABC, y luego hello from D. Y esto debería funcionar igual. De acuerdo.

Hemos agregado algunas cosas. Ahora queremos crear algunos bloques de fraudes que estén protegidos. Entonces, lo que voy a hacer, voy a crear una carpeta llamada protegida y un index.js aquí. Y en este index.js, lo que vamos a hacer es exportar por defecto una función asíncrona, admin, tal vez lo que sea y luego app, que es nuestra aplicación Fastify. Lo que vamos a hacer ahora es aquí, queremos agregar algunas carpetas, algunos puntos finales. Pero antes de eso, necesitamos configurar nuestro sistema de autenticación. Aquí, lo que queremos, es agregar otra importación llamada JWT, por ejemplo, de Fastify.jwt. Entonces, ahora, lo que vamos a hacer, vamos a registrar este complemento y pasarle un secreto. Y lo llamo `cámbiame`. Oye, esto necesita ser cambiado. Ahora estamos agregando esta parte. Vamos a necesitar agregar un par de cosas más, que son bastante, bastante útiles. La primera es Decorator, porque queremos agregar un ayudante de Autenticador. Así que llamamos a decorate y llamamos a esto authenticate, porque así es como vamos a autenticar nuestro sistema. Entonces, esto va a ser otra función asíncrona, que es rec y reply. Estos son objetos de Fastify. Y luego, lo que vamos a hacer, vamos a tener un bonito bloque try-catch y hacer await rec dot JWT verify, que va a verificar nuestro token JWT. Y en caso de un error, solo quiero responder con ese error específico. De acuerdo, eso es muy simple. Ahora podemos cambiar eso si quieres aquí, está bien. Así que hemos agregado esto.

7. Implementando Inicio de Sesión de Usuario y Autenticación

Short description:

Para iniciar sesión, crea un usuario llamado login.js. Usa 'app.post' para manejar la solicitud de inicio de sesión. Autentica la aplicación y valida el nombre de usuario y la contraseña. Lanza un error si las credenciales son incorrectas. Usa JWT para generar un token. Implementa la validación de datos usando Fluent schema. En la ruta protegida, agrega un gancho para autenticar automáticamente todas las rutas.

Ahora, ¿cómo vamos a iniciar sesión? Bueno, para iniciar sesión, voy a crear un usuario llamado login.js aquí. Nuevamente, exporta por defecto una función asíncrona, login app, Hey, luego app dot post porque esto es un post, y luego voy a decir, llama a login, y vamos a necesitar un poco de cosas aquí. Así que dejo este marcador de posición. Entonces vamos a responder directamente, luego necesitamos autenticar nuestra aplicación. Entonces, ooh, lo siento. Yay. Así que llegamos a autenticar nuestra aplicación. Entonces lo que vamos a hacer aquí es que voy a crear, para obtener un nombre de usuario y una contraseña de nuestro cuerpo, y luego voy a hacer, aquí vamos. Si el nombre de usuario es Matteo y la contraseña no es Paulina, vamos, pobre hombre, sistema de autenticación, nunca hagas esto en la vida real. Entonces necesitamos lanzar un nuevo error, necesitamos lanzar un error. Así que voy a hacer un Error de Autorización. Ahora necesitamos este módulo de errores. Esto es Importar Errores de HTTP Errors. Muy útil. Y luego en caso de que solo necesitemos obtener nuestro token. Entonces con JWT, obtienes un token JWT y haces app.jwt.sign y colocamos el nombre de usuario y luego devolvemos el token. Ok, este es nuestro sistema. Ahora necesitamos un poco más porque necesitamos validar un poco más nuestras entradas. Entonces Input S de Fluent schema, aquí vamos. Entonces lo que vamos a hacer aquí ahora es que vamos a abrir el esquema y hacer body s.object y luego .prop y pasar el nombre de usuario, luego esto es una cadena y esto es requerido y lo mismo para la contraseña. Ok, hacemos un poco, un poquito de validación de datos de antemano. Así que también deshabilito esto, también deshabilito esto.

Ahora, lo que necesitamos hacer ahora es tener en nuestra ruta protegida, lo que quiero, quiero tener en nuestro índice aquí, quiero asegurarme de que todas las rutas definidas en este archivo y el archivo que este importa y carga se autentiquen automáticamente. Entonces lo que puedo hacer, puedo agregar un gancho y lo llamaré onRequest. Así que lo estoy agregando al gancho de ciclo de vida onRequest. Esto se llama cada vez que llega una solicitud independientemente de la función. Y vamos a pasar app.authenticate, que es el método que acabamos de agregar. Ahora puedo hacer, por ejemplo, app.get algo como algo y app.slash y simplemente decir, async rec reply. Y solo decir, return está autenticado. Y luego hacer Aquí vamos, ¿de acuerdo? Eso es todo.

8. Pruebas y Agregando Autenticación

Short description:

Para probar si todo funciona, necesitamos enviar una solicitud POST con un cuerpo JSON que contenga el nombre de usuario y la contraseña. La respuesta será un token largo. Luego podemos usar este token como encabezado de autenticación para las rutas protegidas. Además, podemos agregar una prueba para la ruta protegida llamándola después de iniciar sesión con una solicitud POST.

Ahora, necesitamos probar, probar que todo esto funciona, lo cual es, ya sabes, demo-gots. Oye, los demo-gots no están conmigo, como de costumbre. Add no está, oh, ¿dónde puse eso? Add. Bien. Aquí vamos. Así que los demo-gots no están conmigo. Entonces, si hago protected ahora, dice error de no autorizado. Ok. Entonces, para iniciar sesión, aquí vamos. Oye, oye, estoy haciendo trampa. Así que estoy enviando una solicitud POS con un JSON como cuerpo y mi nombre de usuario y contraseña. Ahora la respuesta a esto es un bleep, un largo, largo fragmento de un token. Ok, lo que vamos a hacer es, tomar este token, que en realidad es bastante útil, y luego pasarlo como authentication, a la authentication. Entonces lo que vamos a hacer, vamos a decir h-header, que es, autorización, es autorización para, hey, ok, autorización. Así que vamos a cambiar esto. Para no arruinarlo. Ya he arruinado bastante durante esta charla, básicamente. Aquí vamos. Y luego protected. Con suerte, todo esto funcionaría. Estos están autenticados. Ok.

Ahora, esto es realmente interesante, porque lo que podemos hacer es, también podemos agregar una prueba para este código. Entonces, para agregar una prueba para esta ruta, lo que podemos hacer es protected. Aquí vamos. Entonces, lo que podemos hacer, podemos hacer algo muy similar a lo que estábamos haciendo antes. Y espero. Y llamar a protected. Ahora, primero necesitamos llamar a login. Entonces, primero llamamos a login, pero necesitamos llamarlo como POST.

9. Llamando a la Ruta Protegida

Short description:

Tenemos una URL y el método debe ser POST. Especifica el cuerpo con el nombre de usuario y la contraseña. Llama al token y ciérralo. Llama a JSON para obtener el token. Llama a la URL protegida con el token. Verifica si funciona. Autentica y autoriza.

Entonces, tenemos esta URL. Y luego el método debe ser POST. Aquí vamos. Eso es todo. Y necesitamos especificar un cuerpo. Y necesitamos decir que el nombre de usuario, el nombre de usuario es Matteo, y la contraseña es Alena. Aquí vamos, lo cual es bastante útil.

Y luego lo que quiero hacer es esto. Quiero llamar a este token porque ese es nuestro token JWT. Luego cierro esto, llamo a JSON. Así que obtengo mi token. Ahora puedo llamar, aquí vamos. Sí. Y voy a entrar aquí. Y la URL. Aquí vamos. Protegido. Y luego necesito especificar otro. Ten en cuenta que es bastante importante... Sí. Y luego especificamos nuestro token. Aquí vamos. Y luego es... Choo-choo.

Ahora veamos si todo esto funciona. Oh, esto es autenticación. Solo un segundo. Oh, autorización.

10. Finishing the Demo and Contact Information

Short description:

Token de autorización portador. Esto está autenticado. Fastify se puede utilizar para construir aplicaciones rápidamente utilizando Fastify JWT, decoradores y métodos del ciclo de vida. Lanzamientos de Fastify 3, NodeV14 y soporte nativo de ESM. Echa un vistazo a la aplicación en la URL proporcionada. Contáctame si tienes alguna pregunta.

Lo siento. Autorización. Aquí vamos. Así que esto está funcionando realmente. El formato es token de autorización portador. Portador token. Interesante.

De acuerdo. Así que solo, solo un momento, amigos. Y esto no está funcionando como debería. Token de portador. Así que aquí vamos. Lo siento, necesito entender por qué esto no está funcionando. Y este es el problema, ya sabes, aquí vamos.

De acuerdo, ahora esto es, aquí vamos, RESTBODY. Aquí estamos. Sí, esto está autenticado. Entonces lo que vamos a hacer es llamar a deep equal. Esto está autenticado. Aquí vamos. De acuerdo, solo quería terminar esta demostración, de esta larga demostración diciendo que nuestro servidor Fastify es, Fastify se puede utilizar para construir aplicaciones muy rápidamente utilizando una combinación de varias utilidades, como por ejemplo, Fastify JWT, los decoradores y los métodos del ciclo de vida de Fastify. Ten en cuenta que actualmente estoy utilizando algunas, todo esto está utilizando cosas de última generación. Así que los nuevos lanzamientos de Fastify 3, NodeV14 y el nuevo soporte nativo de ESM. Así que esto no está en Spyle, simplemente se está ejecutando en ESM nativo y se ve bastante fresco para ser visto. Solo quería señalar que esta es la URL donde este sistema, esta aplicación va a, este código va a vivir. Así que si puedes echarle un vistazo y jugar con él si quieres. El sitio web de Fastify es www.fastify.io. Así que puedes buscarlo en NPM y también en Google. Si tienes alguna pregunta sobre Node.js, por favor contáctame en Matteo Colina en Twitter o matteo.colina en nearfun.com y gracias a todos. A todos.

11. Inspiration and Community Ownership

Short description:

Fastify se inspiró en la necesidad de un nuevo marco web para Node.js que combine buenas características de rendimiento en producción y una buena experiencia para los desarrolladores. Su objetivo es resolver una cierta clase de problemas y está construido teniendo en cuenta la propiedad de la comunidad y la contribución abierta. El lema de Fastify es 'cuando alguien informa un error, ¿te gustaría enviar una solicitud de extracción para solucionarlo?'

¡Hola, Matteo, cómo va todo? Muy bien, muy bien. Ha sido genial. Esa fue una demostración increíble sobre la velocidad de Fastify. ¿Sabes? Bueno, tú sabes. Nuestros asistentes parecen estar de acuerdo porque tenemos muchas preguntas llegando. Pero, obviamente, al ser una demostración, quería que volvieras atrás y te centraras en lo que te inspiró al principio, a ti y a Thomas DeLiverdove en 2016, para decir, sabes qué, vamos a construir esta cosa llamada Fastify. ¿Cómo surgió eso? Ese es realmente uno de los grandes puntos de partida. Así que al principio, pensé, bueno, creo que hay espacio para un nuevo marco web para Node.js porque estaba teniendo algunos problemas con Express, Appie, Restify. Todos tenían ciertas cosas que no funcionaban bien en producción para algunas de las empresas con las que trabajaba. Así que pensé, bueno, tal vez haya un espacio en la industria para algo que combine buenas características de rendimiento en producción y una buena experiencia para los desarrolladores al mismo tiempo. Y necesitaba resolver una cierta clase de problemas que Fastify terminó resolviendo. Sin embargo, al principio, pensé, bueno, escribir y mantener un nuevo marco web es una tarea enorme, ¿vale? Es realmente mucho trabajo. Y no lo voy a hacer a menos que pueda encontrar a otra persona para empezar a hacer esto al principio, para empezar a hacer esto juntos. Y si puedo convencer a alguien más de que esta es una buena idea entonces probablemente tengamos una oportunidad. Si no puedo, porque no hay forma de que pueda hacer todo eso solo. Así que básicamente partí del punto de vista de que esto es algo que va a ser propiedad de la comunidad o la comunidad tendrá voz en cómo se construyen todas estas cosas y cómo se mantiene esto. Y por eso tiene una política de contribución abierta desde el principio y cosas así. Y está completamente basado en una gobernanza abierta y muchas de esas cosas. Así que, en esencia, está realmente enfocado en obtener una muy buena experiencia para los colaboradores así como para los usuarios porque los usuarios son los colaboradores en esencia. El lema típico de Fastify es, bueno, cuando alguien informa un error ¿te gustaría enviar una solicitud de extracción para solucionarlo? Porque todos deberían mantenerlo. El mantenimiento es responsabilidad de todos los usuarios en esencia.

12. Características Únicas de Fastify

Short description:

Fastify se diferencia de otros frameworks al admitir completamente Async Await y las últimas características de JavaScript. También proporciona un excelente soporte para el ESM nativo de Node en Fastify v3. A diferencia de otros frameworks, Fastify sigue un patrón basado en ciclos de vida en lugar de un estricto patrón de middleware. Esto permite una mayor flexibilidad en el manejo de rutas y reduce la sobrecarga al activar solo los hooks necesarios.

Muy bien, muy bien. Y luego, con la gran cantidad de frameworks dentro del ecosistema de JavaScript. Solo tenía curiosidad por saber un poco sobre lo que hace que Fastify sea único y destaque en comparación con el resto de ellos. ¿Perdón, puedes repetir? ¿En qué se diferencia Fastify de los otros... Vale, hay algunas cosas, vale. Primero que nada, toma varias partes de la mayoría de los frameworks, vale. En primer lugar, admite completamente Async Await en comparación, por ejemplo, con Express 4. Sé que Express 5 va a admitir Async Await pero aún está en versión alfa o algo así. Y, en primer lugar, admite Async Await y todas las últimas características. También estamos agregando, como he demostrado, el nuevo Fastify v3 agrega un excelente soporte para ESM, para el ESM nativo de Node que se puede usar con Node 14 y 12.18, lo cual es genial. Por lo tanto, estamos muy interesados en adoptar lo último y lo mejor de la especificación de javascript. Sin embargo, no seguimos un estricto patrón de middleware. Seguimos un patrón basado en ciclos de vida. Lo que significa que hay hooks que se activan en cualquier punto de las etapas en las que llega la solicitud y en varias partes donde puedes inyectar código, pero si no estás inyectando código, estas cosas no se activan, lo cual es realmente poderoso porque podemos, una de las cosas clave, uno de los problemas clave, por ejemplo, al escribir una gran aplicación Express es que tienes muchos middlewares donde haces if esta ruta haz esto, y luego si no, llama a next, y luego los acumulas uno tras otro. Con fastify puedes evitar todo eso al tener este tipo de ciclo de vida y puedes establecer esos métodos de ciclo de vida solo para una clase de rutas o solo para algunas rutas específicas, lo cual es una de las mejores formas de estructurar una aplicación, y eso también causa la mínima sobrecarga porque esas cosas solo se activan para las rutas que las requieren esencialmente.

QnA

Preferencia de IDE de Matteo

Short description:

Soy un gran fanático de Vim y T-Max. Recientemente cambié a la distribución de Vim Space. Es ligeramente diferente de la configuración de Vim que estaba usando antes.

Genial, y tenemos una pregunta de Michael Zielenski en la audiencia. Quería saber qué IDE usa Mateo. Soy un gran fanático de Vim y T-Max, he estado usando Vim y T-Max durante los últimos 10 años, tal vez 11, 12, algo así. Recientemente cambié a la distribución de Vim Space. Lo estuve probando y lo he estado usando durante algunas semanas ahora, y es algo interesante, para ser honesto. Me gusta. Es ligeramente diferente de la configuración de Vim que estaba usando antes. Quería probar algo un poco más moderno.

Comida reconfortante de Matteo y Conclusión

Short description:

Matteo estará disponible en una sala de Zoom para responder todas las preguntas. Su comida reconfortante es la pizza, específicamente la pizza italiana. Él enfatiza la diferencia entre la pizza italiana y otras variaciones, especialmente aquellas con piña. Matteo expresa gratitud por la oportunidad de compartir su conocimiento y espera responder más preguntas técnicas. La discusión abarcó el desarrollo de JavaScript en el lado del servidor, el ecosistema de JavaScript y la pizza.

Y solo porque no tenemos mucho tiempo, lo cual es muy, muy desafortunado, quería hacerles saber a todos los que están sintonizando que Matteo no se va a ninguna parte. Estará en una sala de Zoom, por lo que todas las preguntas que todos están haciendo también se responderán en la sala de Zoom. Quería terminar antes de eso siendo, esta es una discusión relacionada con un pseudo chef. Quería saber cuál es tu comida reconfortante.

Bueno, mi comida reconfortante es la pizza. Y por cierto, soy italiano. Ok, así que estoy hablando de pizza italiana. La pizza es una especie de religión aquí. Así que no confundamos lo que puedes comer fuera de Italia con lo que comes en Italia. Y es muy importante que esté hablando de pizza italiana. Ahora puedes conseguir muy buena pizza italiana en muchos otros lugares del mundo. La mayoría de las veces, sin embargo, solo estás obteniendo algo que, ya sabes, es solo otro tipo de plato que se llama pizza. No, no me refiero a eso, ok. Y también si tiene piña, definitivamente no es una pizza italiana. Pero si consigues una muy buena pizza italiana, eso es lo que yo llamaría. Eso es como mi comida reconfortante. También es una bomba de carbohidratos que va a ir directo a mi barriga. Así que eso es más o menos, eso es más o menos.

Definitivamente. Bueno, en este punto, me gustaría agradecer a Matteo por su tiempo esta tarde por compartir su conocimiento en Fastify. Como mencioné, chicos, él no se va a ninguna parte. Simplemente estará en su sala de Zoom para responder todas las preguntas que se hayan hecho. Y son bastantes ya que estás hablando de pizza, la lista simplemente seguía creciendo en términos de cosas más técnicas. Así que estará disponible para responder esas también. Y por favor, sigan enviando esas preguntas. Matteo, ha sido un placer hablar contigo. Siento que he aprendido mucho más sobre el desarrollo de JavaScript en el lado del servidor, el ecosistema de JavaScript y la pizza. Y estoy seguro de que volveremos a hablar. Claro. Adiós.

Despedida

Short description:

Adiós. Adiós. Adiós. Adiós. Adiós. Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Adiós.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
The Talk discusses the shift to full-stack frameworks and the challenges of full-stack documentation. It highlights the power of interactive tutorials and the importance of user testing in software development. The Talk also introduces learn.svelte.dev, a platform for learning full-stack tools, and discusses the roadmap for SvelteKit and its documentation.
SolidJS: ¿Por qué tanto Suspense?
JSNation 2023JSNation 2023
28 min
SolidJS: ¿Por qué tanto Suspense?
Top Content
Suspense is a mechanism for orchestrating asynchronous state changes in JavaScript frameworks. It ensures async consistency in UIs and helps avoid trust erosion and inconsistencies. Suspense boundaries are used to hoist data fetching and create consistency zones based on the user interface. They can handle loading states of multiple resources and control state loading in applications. Suspense can be used for transitions, providing a smoother user experience and allowing prioritization of important content.
De GraphQL Zero a GraphQL Hero con RedwoodJS
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
De GraphQL Zero a GraphQL Hero con RedwoodJS
Top Content
Tom Pressenwurter introduces Redwood.js, a full stack app framework for building GraphQL APIs easily and maintainably. He demonstrates a Redwood.js application with a React-based front end and a Node.js API. Redwood.js offers a simplified folder structure and schema for organizing the application. It provides easy data manipulation and CRUD operations through GraphQL functions. Redwood.js allows for easy implementation of new queries and directives, including authentication and limiting access to data. It is a stable and production-ready framework that integrates well with other front-end technologies.
Tanstack Start - Un Framework de React de Full-Stack Primero del Lado del Cliente
React Summit US 2024React Summit US 2024
30 min
Tanstack Start - Un Framework de React de Full-Stack Primero del Lado del Cliente
Top Content
We surveyed thousands of developers to show that a louder audience leads to a better presentation. There has been a shift in web app development towards server-first architectures, which has improved full-stack capabilities but at the cost of complexity and divergence from the client-centric approach. Tanstec Start is a meta-framework that aims to provide the best client-side authoring experience with powerful server-side primitives. The Tansec Router supports advanced routing features, URL state management, and JSON storage. Combined with the server-side rendering capabilities of TanStack Start, it becomes even more powerful. The TanStack Router has isomorphic loaders and integrates seamlessly with TanStack Query for additional features like polling and offline support. UseSuspenseQuery allows for dynamic streaming of data during SSR. TanStack Start also offers server-side features, API routes, server functions, and middleware. The future plans include RSCs, websockets, real-time primitives, and static pre-rendering. TanStack Start is now in beta and is suitable for building React apps. It is open source.

Workshops on related topic

Construir y Desplegar un Backend Con Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Construir y Desplegar un Backend Con Fastify & Platformatic
Top Content
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente GraphQL y REST APIs con un esfuerzo mínimo. La mejor parte es que también te permite desatar todo el potencial de Node.js y Fastify siempre que lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y plugins adicionales. En la masterclass, cubriremos tanto nuestros módulos de Open Source como nuestra oferta en la Nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/). 
En esta masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la Platformatic Cloud.
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)
Deja que la IA sea tu Documentación
JSNation 2024JSNation 2024
69 min
Deja que la IA sea tu Documentación
Workshop
Jesse Hall
Jesse Hall
Únete a nuestro masterclass dinámico para crear un portal de documentación impulsado por IA. Aprende a integrar ChatGPT de OpenAI con Next.js 14, Tailwind CSS y tecnología de vanguardia para ofrecer soluciones de código e resúmenes instantáneos. Esta sesión práctica te equipará con el conocimiento para revolucionar la forma en que los usuarios interactúan con la documentación, convirtiendo las búsquedas tediosas en descubrimientos eficientes e inteligentes.
Aspectos destacados:
- Experiencia práctica en la creación de un sitio de documentación impulsado por IA.- Comprensión de la integración de la IA en las experiencias de usuario.- Habilidades prácticas con las últimas tecnologías de desarrollo web.- Estrategias para implementar y mantener recursos de documentación inteligente.
Tabla de contenidos:- Introducción a la IA en la documentación- Configuración del entorno- Construcción de la estructura de documentación- Integración de ChatGPT para documentación interactiva
Aprende Fastify Un Plugin a la Vez
Node Congress 2021Node Congress 2021
128 min
Aprende Fastify Un Plugin a la Vez
Workshop
Matteo Collina
Matteo Collina
Fastify es un marco de trabajo HTTP para Node.js que se enfoca en brindar una buena experiencia de desarrollo sin comprometer las métricas de rendimiento. Lo que hace especial a Fastify no son sus detalles técnicos, sino su comunidad, que está abierta a contribuciones de cualquier tipo. Parte de la fórmula secreta es la arquitectura de plugins de Fastify, que permite a los desarrolladores escribir más de cien plugins.Este masterclass práctico está estructurado en una serie de ejercicios que cubren desde lo básico, como "hola mundo", hasta cómo estructurar un proyecto, realizar acceso a bases de datos y autenticación.

https://github.com/nearform/the-fastify-workshop
Masterclass de Fastify
Node Congress 2022Node Congress 2022
152 min
Masterclass de Fastify
Workshop
Matteo Collina
Matteo Collina
Fastify es un marco de trabajo HTTP para Node.js que se enfoca en proporcionar una buena experiencia de desarrollo sin comprometer las métricas de rendimiento. Lo que hace especial a Fastify no son sus detalles técnicos, sino su comunidad, que está abierta a contribuciones de cualquier tipo. Parte de la fórmula secreta es la arquitectura de complementos de Fastify que permite a los desarrolladores escribir más de cien complementos. Este masterclass práctico está estructurado en una serie de ejercicios que abarcan desde lo básico, como "hola mundo", hasta cómo estructurar un proyecto, realizar acceso a bases de datos y autenticación.