Escribiendo tu Primer Plugin de Vite

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Vite es una herramienta esencial para el desarrollo front-end moderno. Lo usamos a diario, pero sabemos poco sobre su funcionamiento interno. Escribimos archivos .jsx o .vue, pero ¿cómo se transpilan a archivos .js? Probablemente haya algo de magia detrás de los plugins de Vite, pero ¿cómo funcionan?

En esta charla, comenzaremos creando un plugin simple y progresaremos hacia otros más avanzados. Después de esta sesión, comprenderás cómo funcionan los plugins de Vite y el flujo general, incluso sin conocimiento previo de los plugins de Vite.

Con este nuevo conocimiento, puedes realizar cálculos durante el proceso de construcción que no necesariamente ocurren en tiempo de ejecución. Esto puede resultar naturalmente en un rendimiento más rápido en tiempo de ejecución. En algunos casos, los resultados de los cálculos se incluyen directamente en la salida del paquete, reduciendo el tamaño final del paquete (ya que no necesitas incluir los datos o la lógica para el cálculo). Además, puedes mejorar la experiencia del desarrollador automatizando ciertas tareas manuales.

Esta charla te introducirá a algo que no habías considerado aprender antes. Te hará darte cuenta de que no es tan difícil como podrías haber pensado, y con suerte, esta charla aumentará tu confianza en el aprendizaje.

This talk has been presented at React Summit US 2024, check out the latest edition of this React Conference.

Eunjae Lee
Eunjae Lee
19 min
22 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hablemos sobre escribir tu primer plugin de Vip. VIT, rollup y el plugin de Vip son herramientas importantes en el desarrollo front-end. Rollup es un empaquetador que puede empaquetar archivos de JavaScript en un solo archivo. VIT pasa por todos los plugins y transforma archivos a módulos JS. VIT y rollup tienen arquitecturas de plugins similares, lo que permite el uso de plugins de rollup existentes en VIT. Discutiré tres propiedades del plugin: resolver ID, función de carga y más. Echemos un vistazo más profundo a la función de transformación. La función de resolver ID determina el ID del archivo o módulo, y la función de carga lee el archivo o módulo y devuelve su contenido. La función de transformación realmente transforma el archivo o módulo en otra cosa. Por ejemplo, puede modificar el código dependiendo de la extensión del archivo. Podemos transformar el objeto resultado en código usando claves de objeto y map. Esto nos permite extraer datos específicos e incluirlos en la salida. Al hacer el código flexible, podemos agregar información adicional como 'construido en' y utilizarla para varios propósitos, como mostrar el nombre de la rama o el hash del commit durante el despliegue. Puedes implementar varias funcionalidades en el plugin de Vip, como leer archivos Markdown, implementar enrutamiento basado en archivos y crear lenguajes específicos de dominio.
Available in English: Writing Your First Vite Plugin

1. Introduction to VIT, Rollup, and Vip Plugin

Short description:

Hablemos sobre cómo escribir tu primer plugin Vip. VIT, rollup y el plugin Vip son herramientas importantes en el desarrollo front-end. Rollup es un empaquetador que puede empaquetar archivos JavaScript en un solo archivo. VIT revisa todos los plugins y transforma archivos en módulos JS. VIT y rollup tienen arquitecturas de plugins similares, lo que permite el uso de plugins rollup existentes en VIT. Hablaré de tres propiedades de los plugins: resolver ID, función de carga y más.

Hola, hablemos sobre cómo escribir tu primer plugin Vip. En esta charla, hablaré sobre VIT, rollup, plugin Vip y algunos ejemplos.

Mi nombre es Eunjae, soy de Corea del Sur, actualmente vivo en Francia. Trabajo en Cal.com, y solía trabajar en estas increíbles empresas.

VIT es una herramienta muy importante en nuestro desarrollo front-end. Es un servidor de desarrollo, transpilador, empaquetador, y es todo. Escribimos TSX y JSX, y estos son los archivos que los navegadores no entienden. Así que tenemos que convertirlos en archivos JavaScript. ¿Y cómo hacemos eso? Probablemente VIT está haciendo algo, y sabemos que el plugin Vip está haciendo algo.

Pero antes de profundizar en el plugin Vip, echemos un vistazo a rollup primero. Rollup es un empaquetador, y tiene un gran impacto en el ecosistema de bibliotecas JavaScript. Por ejemplo, tenemos source slash main.js, que está importando a.js, que está importando b.js, etcétera. Tenemos esta enorme cadena de importaciones, y rollup puede empaquetar todo en un solo archivo.

Por ejemplo, tenemos main.js. Está importando message de message.js, y estamos registrando en la consola message. Y message.js está exportando hello world. Y cuando rollup lo empaqueta, tenemos esto, dist slash output.js, y hello world está directamente incrustado aquí. Y no vemos declaración de importación o exportación, porque rollup empaqueta todo en un solo archivo. Y con VIT, importamos image URL de image.png, y cuando ejecutamos este código, VIT revisa todos los plugins que están registrados en este proyecto. Y pregunta, ¿puedes manejar ese png? ¿Puedes manejar ese png? ¿Puedes manejar ese png? Oh, puedes manejarlo. Entonces deberías leer el archivo y transformarlo en un módulo JS.

Rollup y VIT tienen una arquitectura de plugins muy similar. De hecho, VIT adaptó la arquitectura de plugins de rollup desde el principio. Así que creo que esa es una de las mayores razones por las que VIT ha sido exitoso desde el primer día. Porque podemos usar cualquier plugin rollup existente en VIT. El plugin es un objeto con propiedades opcionales. Y hoy, voy a hablar de tres de ellas. Primero, resolver ID. Devuelve el ID, y también puede interpretarse como, ¿puedes manejarlo? Así que si este plugin devuelve el ID, significa que puede manejarlo. Luego pasa a la función de carga, que literalmente carga el archivo o el módulo.

2. Comprendiendo la Función Transform en el Plugin VIT

Short description:

Echemos un vistazo más profundo a la función de transformación. La función resolve ID determina el ID del archivo o módulo, y la función load lee el archivo o módulo y devuelve su contenido. La función transform realmente transforma el archivo o módulo en otra cosa. Por ejemplo, puede modificar el código dependiendo de la extensión del archivo. En un ejemplo real, podemos transformar el código para considerarlo siempre como producción, eliminando cláusulas else innecesarias.

Y luego puede ir a la función transform, donde puedes transformar el módulo en algo más. Echemos un vistazo más profundo.

Resolver ID. ¿Cuál es el ID de este archivo o módulo? Y aquí, ID significa nombre de la biblioteca, ruta del archivo, etc. Tenemos este ejemplo. Y cuando se llama a resolver ID, se pasa la cadena image.png como parámetro source. Y podemos implementarlo así. Si source termina con .png, entonces devolvemos source. Al devolver algo, da la señal de que este plugin puede manejar este source. Y luego irá a la función load.

Y si devuelve null, entonces significa, no sé, tal vez algunos otros plugins puedan manejar esto, pero yo no. Y la función load lee el archivo o módulo y devuelve su contenido. Como, si implementamos esta función load de una manera tonta, se verá así. Así que lee el archivo y simplemente devuelve el contenido del archivo. Pero en realidad, es más complicado. Y transform, literalmente transforma el archivo o módulo en otra cosa. Por ejemplo, si ID termina con .view, o si ID termina con .jsx, podemos hacer algo con el código y devolver el resultado. Así que si tenemos este código de Vue.js, podemos devolver esto. Y si tenemos este código de React, podemos devolver esto. Así que cuando hablamos de transpilador, en realidad, las cosas suceden en esta función transform.

Hagamos los ejemplos reales. Tenemos este código. Console.log Node-inv, process.inv Node-inv. Si eso es producción, entonces Console.log, esto es producción. Si no, esto no es producción. Escribimos este código, pero al final, cuando desplegamos este código, queremos que este Node-inv sea producción, ¿verdad? Y significa que la declaración if siempre es verdadera. Y significa que podemos deshacernos de esta cláusula else. Así que podemos reescribir esto en este código. Pero esto no sucede automáticamente. Requiere nuestro trabajo transformar el código anterior en este.

3. Writing a Plugin to Transform Code with Rollup

Short description:

Escribamos un plugin que transforme código usando Rollup y rollup.config.js. Declaramos la entrada y salida del plugin, y en el archivo fuente, tenemos el código a transformar. Usamos source.replaceAll para reemplazar una cadena específica con JSON.stringify, asegurando el resultado esperado. Sin embargo, en una implementación real, es importante analizar el código y reemplazarlo adecuadamente.

Así que escribamos un plugin que haga esto por nosotros. En este ejemplo, estoy usando Rollup y rollup-c significa que estoy usando el archivo rollup.config.js. Y aquí, tengo este plugin vacío, que tiene nombre y transform. Y declaramos entrada y salida así. Y en el source, main.js, tenemos el mismo código, ¿verdad?

Ahora necesitamos escribir el plugin para transformar esto en otra cosa. Así que antes de eso, vamos y npm run build. Y no hace nada. Y la salida es la misma que el código fuente. Y hagamos console.log primero. Source e ID. Y lo ejecutamos de nuevo. Y obtenemos source, que es literalmente el source. Y ID es la ruta completa del archivo.

Así que lo que podemos hacer es devolver source.replaceAll process.inf.nodeInf y JSON stringify production. Y si lo ejecuto de nuevo, está funcionando. Ya está funcionando. Sí. Eso fue fácil, ¿verdad? Pero, ¿qué pasa con este JSON stringify? Es un poco raro. Como, ¿y si simplemente ponemos production así? Y ahora algo es raro, ¿verdad? Production sin comillas. En realidad, esta es una regla de Rollup. Así que siempre necesitamos stringify para el resultado que esperamos. Ahora funciona de nuevo. En realidad, esta implementación es estúpida. No hagas esto porque reemplazo todo. Y puede reemplazar cadenas incorrectas inesperadamente. Así que en realidad, necesitas analizar el código y reemplazarlo adecuadamente. Pero esto es solo una demo.

4. Using Virtual Modules for Static Data Handling

Short description:

Veamos un ejemplo donde extraemos nombres de usuario de un endpoint de API. También podemos usar módulos virtuales para manejar tareas pesadas con datos estáticos en tiempo de compilación. Al escribir un plugin fit, podemos manejar bibliotecas inexistentes y producir la salida de bundle deseada.

Así que veamos el segundo ejemplo. Tenemos este endpoint de API. Y proporciona este array de usuarios. Y queremos extraer el nombre de usuario. Entonces, ¿cómo harías eso? Debería ser algo así. Hacemos fetch desde esta URL y obtenemos el JSON y mapeamos sobre el array y extraemos este nombre de usuario. Por supuesto, como el manejo de errores, no lo estoy haciendo ahora mismo. Pero eso es bastante simple. Y podemos hacer esto.

Pero, ¿qué pasa si necesitamos realizar una tarea muy pesada? ¿Qué pasa si es una tarea muy pesada con datos estáticos que se puede manejar en tiempo de compilación? En ese caso, podemos usar un módulo virtual. Así que el módulo virtual, no está dentro de patch.json. Pero de alguna manera funciona. Es raro, ¿verdad? Por ejemplo, tenemos import usernames from non-existing library y hacemos console.log high usernames. Por ejemplo, tenemos users.js y está exportando usernames. Y main.js está importando estos usernames y console.log. Y después de hacer el bundle, obtenemos algo como esto. Así que porque el bundler agrupa todo en un solo archivo y elimina todas las declaraciones de import y export, usernames está incrustado así, ¿verdad?

Justo así. Cuando usamos un módulo virtual, aunque non-existing library no está en patch.json, el bundler puede de alguna manera obtener este módulo y producir esta salida de bundle. Así que para que esto suceda, podemos escribir un plugin fit. Y se verá así. Así que resolve ID. Y si source es non-existing library, entonces podemos devolver source, lo que significa, sí, déjame manejarlo. Puedo hacer eso. Y luego pasa a una función load. Y si ID es non-existing library, entonces podemos devolver una cadena que se vea así, un módulo de JavaScript. En este ejemplo, estoy usando un fit. Y tenemos esta biblioteca de tiempo de compilación de plugin vacía. Y está usando resolve ID y la función load. Y pongo este plugin en el array de plugins.

5. Handling Importing Non-existing Libraries

Short description:

Necesitamos manejar la importación de una biblioteca inexistente en nuestro proceso de construcción. Para hacer esto, podemos simular la biblioteca usando un objeto con un par clave-valor. Al implementar un plugin fit, podemos resolver la importación y devolver la salida de bundle deseada. En lugar de codificar el valor, podemos proporcionar un objeto de fábricas y recorrerlo para almacenar los pares clave-valor.

Y tenemos este main.js que está importando usernames de mi biblioteca de tiempo de compilación, la cual no existe en patch.json. Si ejecuto build, falla, por supuesto, porque rollout no pudo resolver la importación de mi biblioteca de tiempo de compilación. Porque no existe en patch.json. Así que necesitamos simularlo. Así que aquí estamos poniendo un objeto. Y usernames es una clave y el valor es la función getter. Así que hagámoslo async y fetch. Y await. Y obtenemos el JSON. Podemos mapear y username. Es el mismo código que vimos antes en la diapositiva.

Así que en plugin, resolve ID. Si source es mi biblioteca de tiempo de compilación, devolvemos mi biblioteca de tiempo de compilación, lo que significa que puedo manejar eso. Y si ID es mi biblioteca de tiempo de compilación, entonces puede devolver un módulo JS. Y en este caso, vamos a codificar primero. Import const usernames, así. Y ejecutémoslo de nuevo. Ahora está funcionando. Y si miramos este archivo, tenemos usernames. Sí, está funcionando. Si comparas esto, esta declaración de importación ha desaparecido, y usernames está incrustado en esta salida.

Si agrego una cosa más aquí, sí, todavía está funcionando. Así que en lugar de esta codificación, vamos a implementar algo. Así que proporcionamos el objeto de fábricas. Así que la clave es el nombre y el valor es la función getter. Claves del objeto, fábricas, y lo recorremos. Y getter es la clave de fábricas. Y el valor es así. Y si el valor es una instancia de promesa, necesitamos esperar este valor. Y necesitamos almacenar este par clave-valor, ¿verdad? Así que creemos result y result key es value.

6. Transforming Result Object into Code

Short description:

Podemos transformar el objeto result en código utilizando las claves del objeto y map. Esto nos permite extraer datos específicos e incluirlos en la salida. Al hacer el código flexible, podemos agregar información adicional como 'built at' y utilizarla para varios propósitos, como mostrar el nombre de la rama o el hash del commit durante el despliegue. Este enfoque es útil para cálculos intensivos y para obtener información relacionada durante el proceso de construcción.

Y tomemos un descanso y console loop este objeto result. Sí, todavía está fallando, pero está bien. Sí, result es un objeto con usernames y este array.

Ahora transformemos este result en algo así. Así que object keys result. Y hagamos map aquí. Y parece export const key. Y JSON stringify result key, que es el valor. Y unimos este array. Y lo ponemos en una variable. Y devolvemos este código. Y antes de eso, hagamos console loop del código primero.

Ejecútalo de nuevo. Ahora vemos un código export const usernames. Está funcionando bien. Y aquí podemos ver que está funcionando bien. Y porque lo hicimos tan flexible, podemos tener algo más como built at. Así que aquí podemos agregar built at y new date to ISO stream.

Si lo ejecutas de nuevo, ahora ves que tenemos export const usernames y también built at. Y si miramos el archivo, sigue funcionando bien. En este ejemplo, procesamos datos en tiempo de construcción. Y la salida del bundle incluye solo el resultado del cálculo, no la lógica de negocio. Pero por supuesto, si el resultado del cálculo va a ser un array de un millón de user names, entonces no deberíamos hacer eso. Así que piensa cuándo usarlo y dónde usarlo. Y puedes usarlo para cálculos intensivos y obtener información relacionada, como el último commit o nombre de la rama. Así que imagina que estás desplegando una versión de staging. Y en la esquina superior izquierda, puedes poner el nombre de la rama o el hash del commit. Y también puedes usarlo para obtener la estructura del directorio local.

7. Exploring Advanced Functionalities in Vip Plugin

Short description:

Puedes implementar varias funcionalidades en el plugin Vip, como leer archivos Markdown, implementar enrutamiento basado en archivos y crear lenguajes específicos de dominio. Las posibilidades son vastas, como lo demuestra la extensa lista de plugins Vip disponibles en el Awesome Vip Repository. Pruébalo experimentando en un nuevo proyecto. Contáctame en Twitter en Ninja underscore Lee si tienes alguna pregunta.

Así que puedes leer algún archivo Markdown y obtener las propiedades de front matter, o incluso implementar tu propio enrutamiento basado en archivos. Y puedes incluso implementar un lenguaje específico de dominio si quieres ir más allá.

Así que he hablado sobre el tiempo de construcción versus el tiempo de ejecución y el módulo virtual. Pero en realidad, cuando se trata de un plugin Vip, estos son solo una parte de un plugin Vip. Y estos son pequeños temas que elegí para demostrar cómo se ve un plugin Vip y cómo funciona.

Así que si vas al Awesome Vip Repository, tiene una gran lista de plugins Vip muy interesantes. Y la posibilidad es realmente, realmente más grande de lo que piensas. Y dale una oportunidad. Si escaneas este código QR, tiene esta diapositiva, pero también un repositorio de múltiples ejemplos que te muestran cómo puedes hacer las cosas.

Pero te doy una advertencia. He aprendido algo nuevo hoy. Creo que puedo aplicar esta solución a mi problema. Probablemente esté equivocado. Bien, tengo este problema. Estas son las posibles soluciones. Bien, esta tiene más sentido. Entonces sí. Así que deberías pensar de esta manera. Pero ahora que acabamos de aprender esto, dale una oportunidad, pero no en tu trabajo. Solo crea un nuevo proyecto y juega con él y ve cómo funciona. Y solo contáctame si tienes alguna pregunta. Estoy en Twitter en Ninja underscore Lee. Gracias por ver.

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

Depuración Web Moderna
JSNation 2023JSNation 2023
29 min
Depuración Web Moderna
Top Content
This Talk discusses modern web debugging and the latest updates in Chrome DevTools. It highlights new features that help pinpoint issues quicker, improved file visibility and source mapping, and ignoring and configuring files. The Breakpoints panel in DevTools has been redesigned for easier access and management. The Talk also covers the challenges of debugging with source maps and the efforts to standardize the source map format. Lastly, it provides tips for improving productivity with DevTools and emphasizes the importance of reporting bugs and using source maps for debugging production code.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
pnpm: un gestor de paquetes rápido y eficiente para JavaScript
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
pnpm: un gestor de paquetes rápido y eficiente para JavaScript
pnpm is a fast and efficient package manager that gained popularity in 2021 and is used by big tech companies like Microsoft and TikTok. It has a unique isolated node module structure that prevents package conflicts and ensures each project only has access to its own dependencies. pnpm also offers superior monorepo support with its node module structure. It solves the disk space usage issue by using a content addressable storage, reducing disk space consumption. pnpm is incredibly fast due to its installation process and deterministic node module structure. It also allows file linking using hardlinks instead of symlinks.
Más allá de las listas virtuales: Cómo renderizar 100K elementos con 100s de actualizaciones/seg en React
React Advanced 2021React Advanced 2021
27 min
Más allá de las listas virtuales: Cómo renderizar 100K elementos con 100s de actualizaciones/seg en React
Top Content
The Talk discusses optimizing rendering of big tables using Flipper, a new version that is ten times faster with improved user interaction and richer data. It explores optimizing rendering with React, virtualization, filtering, sorting, and windowing techniques. The introduction of the Flipper Datasource packet simplifies handling updates, inserts, and removals. The performance of the Flipper data source package is excellent, even in a debug build of React, with minimal CPU usage. The Q&A session covers incremental sorting, dynamic row height, and the potential for two-dimensional virtualization in the future.
Durable Objects - Todo En Todas Partes Todo De Una Vez Por No Mucho Dinero
React Day Berlin 2023React Day Berlin 2023
31 min
Durable Objects - Todo En Todas Partes Todo De Una Vez Por No Mucho Dinero
Top Content
Durable Objects is a versatile programming paradigm by Cloudflare that allows for stateful and uniquely addressable server environments. It simplifies feature development, enables real-time updates through WebSocket connections, and provides a built-in key-value store for long-term storage. It can be used to create collaborative applications, manage data storage efficiently, and explore co-located compute and data at the edge. Other companies like Azure also offer similar technologies. Deno's KV and fly.io's Flame are innovative products that eliminate the need for provisioning databases and Kubernetes clusters.
Depuración con Chrome DevTools
JSNation Live 2021JSNation Live 2021
11 min
Depuración con Chrome DevTools
Top Content
Here are some tips for better utilizing DevTools, including using the run command, customizing keyboard shortcuts, and emulating the focus effect. Learn how to inspect memory, use the network panel for more control over network requests, and take advantage of console utilities. Save frequently used code as snippets and use local overrides for easy editing. Optimize images by using a more optimized format like AVIF and track changes in the network panel to see the reduced data size.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
De Todo App a B2B SaaS con Next.js y Clerk
React Summit US 2023React Summit US 2023
153 min
De Todo App a B2B SaaS con Next.js y Clerk
Top Content
WorkshopFree
Dev Agrawal
Dev Agrawal
Si eres como yo, probablemente tengas un millón de ideas para proyectos secundarios, algunas de las cuales incluso podrían hacerte ganar dinero como un micro SaaS, o podrían resultar ser la próxima startup de mil millones de dólares. Pero, ¿cómo sabes cuáles? ¿Cómo pasas de una idea a un producto funcional que puede ser puesto en manos de clientes que pagan sin renunciar a tu trabajo e invirtiendo todo tu tiempo y dinero en ello? ¿Cómo pueden competir tus proyectos secundarios en solitario con las aplicaciones construidas por enormes equipos y grandes empresas?
Construir productos SaaS ricos viene con desafíos técnicos como infraestructura, escalabilidad, disponibilidad, seguridad y subsistemas complicados como autenticación y pagos. Por eso, a menudo son los gigantes tecnológicos ya establecidos quienes pueden construir y operar productos de este tipo de manera razonable. Sin embargo, una nueva generación de devtools está permitiendo a los desarrolladores construir fácilmente soluciones completas que aprovechan la mejor infraestructura en la nube disponible, y ofrecen una experiencia que te permite iterar rápidamente en tus ideas por un bajo costo de $0. Se llevan todos los desafíos técnicos de construir y operar productos de software para que solo tengas que pasar tu tiempo construyendo las características que tus usuarios quieren, dándote una oportunidad razonable de competir contra el mercado al mantenerte increíblemente ágil y receptivo a las necesidades de los usuarios.
En esta masterclass de 3 horas comenzarás con una simple aplicación de gestión de tareas construida con React y Next.js y la convertirás en un producto SaaS completamente funcional y escalable integrando una base de datos escalable (PlanetScale), autenticación multi-tenant (Clerk), y pagos basados en suscripción (Stripe). También aprenderás cómo los principios del desarrollo de software ágil y el diseño impulsado por el dominio pueden ayudarte a construir productos rápidamente y de manera rentable, y competir con las soluciones existentes.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
WorkshopFree
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Construyendo Pinia desde cero
Vue.js Live 2024Vue.js Live 2024
70 min
Construyendo Pinia desde cero
Workshop
Eduardo San Martin Morote
Eduardo San Martin Morote
Sumergámonos en cómo funciona Pinia bajo el capó construyendo nuestro propio `defineStore()`. Durante este masterclass cubriremos algunos conceptos avanzados de Vue como la inyección de dependencias y los scopes de efectos. Esto te dará una mejor comprensión de la API de Composición de Vue.js y Pinia. Requisitos: experiencia en la construcción de aplicaciones con Vue y su API de Composición.
Masterclass de Desarrollo Web 3D con el ecosistema de TresJS: Un taller de Vue.js
Vue.js Live 2024Vue.js Live 2024
119 min
Masterclass de Desarrollo Web 3D con el ecosistema de TresJS: Un taller de Vue.js
Workshop
Alvaro Saburido
Alvaro Saburido
Presentamos "Masterclass de Desarrollo Web 3D con TresJS", un taller especializado creado para desarrolladores de Vue.js ansiosos por explorar el mundo de la gráfica 3D en sus aplicaciones web. TresJS, un potente renderizador personalizado para Vue, está diseñado específicamente para funcionar perfectamente con el sistema reactivo de Vue. Este taller ofrece una inmersión profunda en la integración de visualizaciones 3D sofisticadas y experiencias interactivas directamente en aplicaciones Vue, aprovechando las fortalezas únicas de los ecosistemas de Vue y TresJS.
Este taller está diseñado para desarrolladores de Vue.js que buscan ampliar sus habilidades en la tercera dimensión, diseñadores de UI/UX interesados en incorporar elementos 3D en aplicaciones web, y desarrolladores front-end curiosos sobre el potencial de la gráfica 3D para mejorar las experiencias de usuario. Debes estar familiarizado con Vue.js para aprovechar al máximo este taller.
Lo que Aprenderás- Introducción a TresJS: Descubre los fundamentos de TresJS y cómo se integra con el ecosistema de Vue para dar vida a la gráfica 3D.- Creación de Escenas 3D con Vue: Aprende a construir escenas 3D complejas utilizando componentes Vue, mejorando tus interfaces de usuario con visuales dinámicos e inmersivos.- Interactividad y Animación: Domina las técnicas para hacer tus escenas 3D interactivas, respondiendo a las entradas del usuario para una experiencia cautivadora.- Integración con Funcionalidades de Vue: Explora la integración avanzada de TresJS con la reactividad, los composables y la tienda Vuex de Vue para gestionar el estado en aplicaciones web 3D.- Rendimiento y Mejores Prácticas: Obtén información sobre la optimización de tus escenas 3D para el rendimiento y las mejores prácticas para mantener aplicaciones web fluidas y receptivas.