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.
1. Introducción a Fastify
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
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
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
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
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
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
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
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
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
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
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
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.
Preferencia de IDE de Matteo
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
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.
Comments