¿Qué estabas diciendo, Will? Es seguro en memoria. Es seguro en memoria y Rust tiende a ser correcto, como te obliga a hacer las cosas correctamente. Eso no significa que no puedas cometer errores, obviamente, como tu lógica puede estar equivocada, pero te obliga a manejar las condiciones de error, si tienes una enumeración, debes hacer coincidir todas ellas y manejar cada caso. Así que hay muchas cosas en Rust que te obligan a hacer las cosas bien.
Bueno, y lo bueno de esto es que antes de Hyper, tenías una implementación estándar de TypeScript de HTTP, que funciona bien, pero es un poco más lento. Rust es un lenguaje de nivel inferior que JavaScript, por lo que Hyper tiene la capacidad de ser un poco mejor en el rendimiento. Correcto, y tenemos un rendimiento mucho mejor para algunas cosas. Sí, de hecho, estoy realmente impresionado con lo rápido que ha sido la biblioteca HTTP estándar, considerando que está completamente escrita en TypeScript. Así que vamos a escribir una pequeña aplicación Hello World con eso solo para ver cómo se ve eso, y lo usaremos para hacer algunas pruebas de carga para que podamos ver la diferencia cuando usemos Hyper.
Y luego, una vez que pasemos por una aplicación Hello World para Hyper, construiremos un enrutador y un servidor a su alrededor. Vamos a modelar esto según Express. Mi suposición es que la mayoría de las personas aquí han usado Node y probablemente tienen algo de experiencia con Express, así que vamos a hacer eso. Quiero decir, típicamente, si fuera a construir un nuevo marco desde cero con Deno, probablemente no modelaría Express. Haría algo más idiomático para Deno. Deno utiliza Web Standards en todos los aspectos, por lo que la mayoría de las cosas que están en Deno también están disponibles en el navegador, lo cual es genial. Así que usas Web Standards la mayor parte del tiempo. Hay cosas que he aprendido gracias a Deno que están en Web Standards y están disponibles en el navegador que no tenía idea de que estaban allí, lo cual ha sido genial. Cosas como objetos de solicitud y respuesta y cosas de nivel inferior que no pensé que estaban disponibles en el navegador, lo están, lo cual es genial.
Después de eso, crearemos un pequeño marco que haga enrutamiento y permita agregar middleware y luego, si tenemos tiempo al final, usaremos OAK. OAK es más un enfoque de servidor web idiomático escrito por alguien del equipo principal de Deno. Está disponible para usar, pero es un marco web. Así que cuando terminemos con esto, tendrás un pequeño marco web que has escrito tú mismo, lo cual será realmente genial para pasar por ese proceso y ver todas las cosas en las que tienes que pensar cuando estás construyendo un marco web. Pero no lo recomendaría para producción. OAK está bastante bien respaldado por la comunidad y te recomendaría que lo pruebes si vas a construir tu propio servidor, pero esto será genial para ver algunos de los aspectos internos de cómo funciona un marco web.
Y justo antes, o mientras Matt comienza aquí, si tienes alguna pregunta mientras avanzamos, puedes publicarlas en el chat o hay un canal de Discord para esta masterclass y haremos todo lo posible para responder mientras avanzamos. Bien, y trataré, si vamos demasiado rápido o algo así, solo avísanos o si necesitas una explicación o más información sobre lo que estamos haciendo, definitivamente avísanos. Así que estoy en una configuración extraña. Así que si me ves mover la mano, no sé si puedes verme siquiera, pero si me ves mover la mano. Tengo mi iPad aquí. Esa es mi segunda pantalla en este momento. Así que solo tengo algunas notas para seguir. Muy bien, aquí vamos. Así que ahora solo tengo una carpeta. No hay nada en ella. Así que necesitas tener Deno instalado. Necesitas tener al menos Deno 1.9 o superior. Hyper se agregó a la API de Deno en la versión 1.9. Todavía está en un estado inestable. Así que usaremos la bandera de inestable para esto. Tengo este otro archivo aquí. Oye, este es un probador de carga. Supongo que puedo abrirlo. Sí, lo voy a vincular en Discord y también lo vincularé aquí en el chat. Sí, esto es genial. Es un probador de carga. Es solo una utilidad de línea de comandos que puedes usar para generar carga en una URL. Y eso nos permitirá analizar el rendimiento de cada una de nuestras soluciones que creemos. Así que si quieres hacer eso con nosotros, definitivamente descarga HEI. Los ejecutables están aquí mismo. Solo los descargas y los ejecutas. Es posible que debas hacer chmod, luego mach1, chmod 777, luego el nombre del archivo. Muy bien, vamos a construir un pequeño servidor con Deno. Oh, otra cosa que necesitarás. Estoy en VS Code. Hay una extensión para Deno, si buscas Deno en tus extensiones. Es la que es de Denoland. Denoland es la organización en GitHub para Deno, y ellos mantienen esta extensión. Solía ser de terceros, y luego la trajeron, lo cual es genial. Así que obtén esa extensión. Eso te permitirá hacer cosas como esperas en el nivel superior, obtener los tipos para Deno, TypeScript y todo eso. Muy bien, lo primero que voy a hacer es configurar esto para Deno. Voy a hacer Comando-Mayús-P, y si escribes Deno, obtendrás inicializar la configuración de tu espacio de trabajo, y solo presiona Enter en eso, y creará un archivo de configuración de VS code para que VS code sepa que este es un proyecto de Deno, y la extensión ahora estará en uso. Muy bien, voy a crear una carpeta, y la llamaré STD, y vamos a crear la implementación de hello world aquí para la biblioteca estándar, y simplemente puedes crear un archivo TS, y mi iPad sigue quedando en blanco, así que no recuerdo el nombre exacto del módulo en el que lo vamos a poner. Muy bien. No necesitas clonar Hey. Hey, si quieres, acabo de vincularlo. Lo vamos a usar, pero es solo un probador de carga. No vamos a escribir ningún código ni nada por el estilo. Correcto, sí. Solo lo estamos usando para que cuando escribamos nuestro servidor, lo iniciemos, podemos apuntar Hey a eso y hacer que genere carga y ver cuántas solicitudes por segundo podemos obtener. Muy bien, lo primero que vamos a hacer es importar serve, y esta es la implementación de Hello World de la biblioteca estándar, solo para que te hagas una idea de cómo se ve. Deno utiliza módulos ESM, por lo que no tenemos que usar NPM install ni nada por el estilo. Literalmente podemos apuntar esto en Internet, y traerá estos archivos, lo cual es súper genial. Esa es una de las grandes innovaciones de Deno también es alejarse de NPM y la gestión de dependencias y permitirte hacerlo de una manera más amigable para la web. Sí, Brian, de hecho tenemos un enlace de GitHub para la masterclass que tiene la versión final de lo que estamos creando hoy, así que lo vincularé más tarde para que las personas puedan seguirlo y no estar buscando el código final mientras intentamos codificarlo. Estamos comenzando con una carpeta vacía, como puedes ver, Matt solo tiene su std / hello-world.ts y nada más, así que eso es con lo que empezamos hoy. Sí, esto es súper genial. Deno es genial. Si no lo has usado antes, sí, no tienes que hacer nada para la configuración. No necesito crear un NPM. No tengo que hacer ningún package.json ni nada por el estilo. Simplemente puedo crear un archivo TypeScript y comenzar a codificar y luego simplemente lo vamos a ejecutar. No hay más que hacer. Los paquetes pueden estar en caché localmente, por lo que lo que puedes hacer, si estás ejecutando el complemento de VS Code, puedes ir arriba y hacer clic derecho en él, creo, y potencialmente cachear el complemento. Y de esa manera estará disponible para ti. Sí, una cosa que me ha pasado ahora mismo es que no encuentra estas cosas. Así que a veces, después de inicializar la extensión, necesito reiniciar VS Code, así que voy a hacer eso rápidamente. Así que es posible que también necesites hacer eso. Si ves ondas rojas debajo de la importación, entonces tendrás que hacer eso. Así que ahora desaparecieron, así que estoy listo para continuar.
Comments