Un vistazo a Preview.js, una extensión de código abierto para Visual Studio Code, IntelliJ y WebStorm que te permite previsualizar componentes individuales de React al instante, actualizados mientras escribes.
This talk has been presented at React Summit 2022, check out the latest edition of this React Conference.
FAQ
Un ingeniero de felicidad del desarrollador es un ingeniero de software que se enfoca en mejorar la eficiencia y satisfacción de otros ingenieros a través de la refactorización, la corrección de pruebas inestables y la aceleración de la integración continua, además de desarrollar herramientas para agilizar el trabajo de sus colegas.
Preview JS es una herramienta desarrollada para permitir una vista previa en tiempo real de componentes, facilitando así la programación y el diseño en frameworks como React, Vue y Solid. Está disponible en VS Code e IntelliJ, y ayuda a los desarrolladores a ver cómo los cambios en el código afectan instantáneamente a los componentes.
Si una API elimina los elementos no disponibles del menú sin indicarlo claramente, puede causar confusión entre los usuarios, quienes podrían pensar que el restaurante ha eliminado permanentemente estos elementos. La solución es modificar la API para que muestre los elementos como 'no disponibles' en lugar de eliminarlos.
Storybook es una herramienta que actúa como una galería para componentes de UI, donde cada componente puede tener varias 'historias' que muestran diferentes estados o versiones del componente. Es útil para documentar y diseñar componentes de manera aislada, asegurando que cada variante esté bien definida y sea fácil de revisar.
Preview.js proporciona una actualización en vivo de los componentes a medida que se ajustan sus propiedades, lo que permite a los desarrolladores ver y ajustar cambios en tiempo real sin necesidad de recargar o recompilar el código. Esto mejora la eficiencia y facilita la iteración rápida durante el desarrollo.
Storybook y Preview.js son complementarios; mientras Storybook ayuda en la documentación y organización de componentes UI, Preview.js permite la visualización en tiempo real de cambios en los componentes. Ambas herramientas pueden ser utilizadas juntas para maximizar la eficiencia en el desarrollo y el diseño de interfaces.
Francois, un ingeniero de felicidad para desarrolladores, habla sobre los desafíos de los builds lentos y su impacto en la productividad. Explora la implementación de mostrar elementos de menú no disponibles en una aplicación de entrega de comida y demuestra el uso de Storybook para el diseño de componentes. Francois presenta Preview.js, una herramienta para previsualizar componentes de React, Vue y Solid, y explica cómo simplifica el proceso de desarrollo. También destaca los beneficios de usar PrivyJS con Storybook y VIT para un desarrollo más rápido y eficiente.
1. Introducción a la Ingeniería de Felicidad del Desarrollador
Short description:
Hola, soy Francois, un ingeniero de felicidad del desarrollador. Trabajo en refactorizar, arreglar pruebas y crear herramientas para hacer que los ingenieros sean más rápidos. Hoy hablaré sobre Preview JS y los desafíos de las compilaciones lentas y su impacto en la productividad.
Hola, mi nombre es Francois. Soy un ingeniero de felicidad del desarrollador de Sydney, Australia. Es posible que te estés preguntando, ¿qué es un ingeniero de felicidad del desarrollador? Lo que significa es que soy un ingeniero de software regular a quien le gusta trabajar en refactorizar cosas o arreglar pruebas inestables, o hacer que la integración continua sea más rápida, pero a veces también se trata de crear nuevas herramientas para hacer que otros ingenieros sean más rápidos. Una de estas herramientas se llama Preview JS, y voy a hablar de eso ahora. Es posible que estés familiarizado con este cómic de XKCD. Creo que fue lanzado hace bastante tiempo, pero aún es relevante hoy en día. Te daré unos segundos para que lo leas. Esto, creo, fue especialmente relevante en los días en que muchos programadores usaban C++ u otro lenguaje realmente lento, donde tenías que esperar cinco minutos, tal vez 10 minutos, tal vez incluso una hora para que tu código se volviera a compilar. No es tan relevante hoy en día para JavaScript, ¿o sí? En realidad, no es tan inusual en estos días trabajar en una base de código grande que use tal vez una versión antigua de Webpack o una versión mal configurada de Webpack, que tarda un par de minutos en ejecutar la compilación. Tal vez incluso peor, tal vez tengas que esperar 30 segundos cada vez que haces un cambio en el archivo, lo cual, si lo piensas, cuando sumas eso durante un día cada vez que quieres ver el impacto de un cambio de código que hiciste, eso es bastante tiempo que se pasa Y no solo es esperar, sino que también interrumpe tu flujo, así que generalmente vas a cambiar de contexto, vas a empezar a hacer otra cosa y luego vuelves y simplemente, has perdido la noción de lo que estabas tratando de hacer o lo que sea que tenías en mente simplemente no está allí. Y no es muy bueno para la productividad o para la felicidad en la ingeniería.
2. Manejo de elementos de menú no disponibles
Short description:
Tomemos el ejemplo de una aplicación de entrega de comida llamada Humbry. Los usuarios han dado retroalimentación de que se sorprenden cuando el menú no contiene los elementos esperados. Actualmente, si un elemento no está disponible, se elimina por completo del menú. Sin embargo, los diseñadores de la aplicación han recibido una solicitud de función para mostrar elementos no disponibles pero dejar claro que no están disponibles. La primera forma de implementar esto es ejecutando la aplicación localmente.
Entonces, tomemos este ejemplo, esta es una aplicación de entrega de comida que llamé Humbry y es realmente solo para el propósito de esta presentación. Aquí tenemos varios restaurantes y digamos que tengo antojo de crepes francesas, así que voy a decir crepes. Bien, hay un restaurante llamado Crêperie François y voy a ir allí y revisar. Bien. Hay algunas cosas realmente deliciosas, plátano caramelizado y chocolate. Eso suena bien. Naranja fresca y confitada. Bien. Eso suena bien. Bien. Eso también. Bien. Voy a pedir todo, tal vez dos de cada uno. Genial. Esto es más o menos lo que esperarías de una aplicación de entrega de comida. Y estamos en los primeros días de lanzamiento para los usuarios. Y la primera retroalimentación que recibimos es que a algunos usuarios les sorprende que a veces el menú no contenga los elementos que esperaban. Esto se debe a que a veces, si un elemento no está disponible, actualmente la API simplemente lo elimina del menú. Entonces, digamos que este restaurante se quedó sin pollo. Este primer elemento, pollo Kung Pao, en realidad estará completamente ausente. Lo cual sorprende a los usuarios, porque piensan, ¿este restaurante eliminó esto del menú para siempre? ¿Debería boicotear completamente este restaurante porque eliminaron mi elemento favorito? No, ese no es el caso. Simplemente no está disponible hoy. Y realmente esa es nuestra responsabilidad como diseñadores de esta aplicación, hacerlo claro. Entonces, en cambio, recibimos una solicitud de función de nuestro gerente de producto, que dice que ahora deberíamos mostrar los elementos de menú no disponibles, pero dejar claro que no están disponibles. Así que sabes cómo aquí tenemos este contador, en lugar de este contador, simplemente diremos, no disponible hoy, ¿verdad? Esto debería ser mucho menos confuso para los usuarios. Por supuesto, la primera forma en que podemos implementar esto es ejecutando la aplicación localmente. ¿De acuerdo? Así que vamos a ir a
3. Modificando API y código para elementos de menú no disponibles
Short description:
Estoy ejecutando la aplicación localmente y esperando a que se inicie. Necesito encontrar un restaurante con un elemento de menú no disponible, pero la API no devuelve elementos no disponibles. Puedo cambiar la API para que los devuelva o simularlo en mi código. Modificaré el código para marcar un elemento de menú como no disponible y actualizaré el componente para mostrarlo como tal.
en nuestra terminal, ejecutamos Yarn Dev y esperamos un poco. Bien, está ejecutándose en localhost, genial. Debo esperar un poco para que se inicie. En realidad, no estoy del todo seguro de por qué, pero algo aquí tarda bastante tiempo. Esto es exactamente a lo que me refería con el tiempo que se pierde esperando. Podría ir a Twitter y olvidarme completamente de esto y luego tener que esperar nuevamente porque necesito recargar la página o algo así. Bien, genial. Así es nuestra aplicación. Está en ejecución. Ahora necesito encontrar un restaurante que tenga un elemento de menú que no esté disponible actualmente, así que voy a buscar y tratar de encontrar uno. Pero espera, dije antes que la API en realidad no devuelve elementos de menú que no están disponibles, así que eso no va a funcionar. Todos ellos están disponibles por definición porque son devueltos por la API. Así que tengo un par de formas de abordar esto. Una es si soy un ingeniero que trabaja en la API, entonces puedo cambiar la API para que devuelva elementos no disponibles, aunque debo tener cuidado de no devolverlos a versiones de la aplicación que aún no los admiten. O si no sé nada sobre la API, tendré que simularla. Voy a entrar en mi código y encontrar... Bien, es la página del restaurante... Oops, página del restaurante, y voy a entrar en eso. Bien, eso está usando este estado de página de detalles del restaurante, que es un estado de MobX. Al final del día, todo lo que hace es obtener. Bien, está obteniendo eso, está obteniendo los datos, la respuesta de los detalles del restaurante. Genial. Al menos esto está bien tipado. Y eso devuelve un elemento de menú, y el elemento de menú tiene un campo disponible que es un booleano opcional. Bien, voy a modificar esto y decir, data.menu.zero.noDisponible = true. Y voy a volver aquí. Entonces, este primero, porque el número cero debería estar no disponible, pero por supuesto no lo hemos implementado, así que ahora todavía muestra el contador. Y ahora, sé que este componente se llama elemento de menú del restaurante, así que voy a entrar aquí y decir... Bien, aquí, en lugar del contador, queremos decir que si está no disponible, entonces mostramos no disponible
4. Ejecutando la aplicación localmente y usando Storybook
Short description:
Bien. Genial, hecho. Ejecutar la aplicación localmente es muchas veces la solución correcta. Opción dos, podríamos usar Storybook. Es prácticamente una aplicación de galería para todos tus componentes de interfaz de usuario. Cada historia es una versión específica de tus componentes.
en su lugar. Así que, menú no disponible, no disponible. Genial. Bien. Genial, hecho. Eso es todo. Ahora, por supuesto, debo recordar eliminar esto porque si no lo hago, va a arruinar la experiencia para los usuarios, pero aparte de eso, hemos terminado. Afortunadamente, esta es una buena base para trabajar. Gracias Next.js. Y sí, prácticamente hemos terminado.
Entonces, ¿ejecutar la aplicación localmente es muchas veces la solución correcta, verdad? Es muy sencillo. No requiere ninguna configuración adicional. Lo único es que simular data puede ser difícil dependiendo del caso de uso específico en el que estés trabajando. Y la velocidad de iteración puede ser lenta, nuevamente, solo si estás trabajando en una base de código realmente compleja o algo que no está muy bien configurado. Pero eso es más común de lo que crees.
Opción dos, podríamos usar Storybook. En caso de que no estés familiarizado con Storybook ya, es prácticamente una aplicación de galería para todos tus componentes de interfaz de usuario. Se llama Storybook porque defines historias para tus componentes. Cada historia es una versión específica de tus componentes. Así que en nuestro caso, por ejemplo, tenemos la historia de no disponible y la historia de disponible. Entonces déjame mostrarte lo que eso significa. Voy a entrar aquí y ejecutar tu Storybook. Y esto puede llevar un tiempo dependiendo de cuántos componentes tengas. Vale. En este caso, muy rápido, genial. Y puedes ver, okay, tenemos esta historia de contador. Tenemos la historia de no coincidencia, la historia de encabezado de restaurante, lista de restaurantes, y así sucesivamente. Entonces, lo que nos interesa aquí es el elemento de menú del restaurante donde tenemos dos historias diferentes, predeterminada y seleccionada. Así que puedes ver que cuando está seleccionada, ya hay un contador creado. Y puedo volver aquí y déjame mostrarte cómo está implementado eso. Así que tenemos este archivo junto al elemento de menú del restaurante que es el elemento de menú del restaurante para las historias. Y tiene un poco de boilerplate.
5. Creando una Historia para el Elemento de Menú No Disponible
Short description:
Definimos argumentos para las historias, como predeterminado y seleccionado. Queremos crear una nueva historia llamada no disponible con un elemento de menú no disponible. Después de simular la experiencia, revertimos el cambio para probar otro enfoque.
plato para storybook. Y luego cada historia es esto. Así que tenemos argumentos que definimos para la historia. Así que aquí tenemos dos historias, predeterminado y seleccionado. Y predeterminado y seleccionado están aquí. Así que puedes ver que la diferencia está en los argumentos que pasamos, que son prácticamente las props. Así que en nuestro caso, queremos crear una nueva historia llamada no disponible con un elemento de menú que, por supuesto, está no disponible. Oops, olvidé una coma, disponible, true. Eso está bastante bien, okay. Y ahora debería aparecer. Okay, perfecto. Lo tenemos aquí. Pero por supuesto, no hemos revertido el cambio todavía. Así que hagámoslo de nuevo. Simplemente simulando la experiencia desde cero, elemento de menú.noDisponible, no disponible. Okay, perfecto. Y se actualizó bastante rápido, lo cual es genial. Y déjame revertir eso de nuevo porque lo vamos a hacer de nuevo de otra manera.
6. Beneficios de Storybook para el Diseño de Componentes
Short description:
Lo bueno de Storybook es que fomenta un buen diseño, no solo desde una perspectiva de diseño de UX, sino también desde una perspectiva de diseño de software. Te impulsa a crear componentes simples que son agnósticos del estado, lo que los hace fáciles de probar y reutilizar en diferentes bases de código.
Genial. Lo bueno de Storybook es que fomenta un buen diseño, no solo desde una perspectiva de diseño de UX, sino también desde una perspectiva de diseño de software. Entonces, debido a que quieres historias para cada uno de tus componentes, debes pensar en qué componentes quieres en primer lugar y cómo quieres que se diseñen en términos de props que toman, etc. Y la forma en que Storybook estructura las historias significa que estás un poco impulsado en la dirección de crear componentes simples que son agnósticos del estado, por lo que no son capaces de usar Redux o algo similar. Y usualmente eso es algo muy bueno porque significa que tus componentes son muy fáciles de probar y también de reutilizar.
7. Preview.js para React, Vue y Solid
Short description:
Storybook actúa como documentación y te permite previsualizar componentes. La opción tres es tener una previsualización para componentes de React, como previsualizaciones de markdown. No pude encontrar una solución adecuada, así que construí Preview.js. Preview.js funciona con React, Vue y Solid, y está disponible en VS Code e IntelliJ.
en diferentes bases de código, así que hay muchas cosas buenas allí. También actúa como documentación, lo cual, nuevamente, es súper útil, por ejemplo, si quieres decirle a tu diseñador de UX, hey, tengo este componente que actualmente en esta implementación en particular, puedes verlo en esta URL. Eso es realmente súper útil y conciliar eso con el diseño en el que está trabajando tu diseñador. Puede ser un poco lento para iniciar, ya que depende de cuántos componentes tengas, y realmente es algo en lo que el equipo de storybook está trabajando para mejorar de todos modos, así que no es algo de lo que me preocuparía demasiado. Requiere un poco de boilerplate, por lo que vimos que solo puedes ver componentes que tengan historias definidas para ellos, así que primero necesitas definir las historias. Si encuentras un componente y te preguntas cómo se ve y no hay una historia para él, primero tendrás que escribir una historia. Genial. ¿Hay una opción tres? ¿Sabes cómo cuando escribes markdown en tu IDE, digamos en VS Code, puedes ver una vista previa de ello. Permíteme mostrarte. Creemos un archivo readme y digamos, hola mundo. Estoy en una Mac. Voy a presionar comando K y V, creo. Sí. Solo voy a decir que esto se actualiza instantáneamente con una vista previa agradable. Ahora puedo ver esto es bastante genial. Genial. Entonces, ¿qué pasaría si tuviéramos algo así, pero para componentes React. Y seguí buscando eso, pero nunca pude encontrar la solución correcta. Hubo un par de contendientes, pero el problema es que solo funcionan con componentes que no toman ninguna prop o que son súper, súper simples. Así que decidí construirlo. Y se llama Preview.js. En realidad, antes se llamaba React Preview. Porque era para componentes React. Pero luego me di cuenta de que también podría funcionar con otros frameworks como Vue y Solid. Así que lo renombré a Preview.js. Y también en el proceso, prácticamente todo. Entonces Preview.js funciona con React, Vue 2, Vue 3 y Solid. Está disponible en VS Code e IntelliJ. Así que veamos cómo se ve Preview.js. Volvamos a VS Code. Aquí tenemos nuestro elemento de menú de restaurante, al que volví a
8. Previsualización de elementos del menú de restaurante en Preview.js
Short description:
Puedo ver una previsualización del elemento del menú de restaurante abierto en Preview.js sin escribir ningún código. Genera automáticamente un valor válido basado en las props y el tipo de elemento del menú.
estado anterior. Y aquí voy a tener este botón, abrir elemento del menú de restaurante en Preview.js. Así que voy a hacer clic en eso. Y ¡oh, prueba! Eso es bastante genial, okay. Puedo ver una previsualización de eso. Y, nuevamente, no tuve que escribir ningún código para esto. Esto es tal cual. Básicamente, lo que hizo fue mirar las props de esto. Es, entonces, oh, okay. Este específico, primero, es un componente React, y por lo tanto no puedo mostrar esta cosa. Pero también dice, okay, que toma el recuento de elementos del menú al actualizar. Y en realidad puede mirar el tipo de elemento del menú y el tipo
9. Implementando el estado no disponible
Short description:
Hagámoslo más realista implementando el estado no disponible. Proporciono un valor de ejemplo y veo las actualizaciones en vivo al instante. Con comentarios instantáneos, lo embellezco con relleno, esquinas redondeadas, sombra y un borde rojo. A pesar de los errores tipográficos, es genial.
de generar un valor válido para ello. Bueno, esto, tanto como pueda adivinar. Así que aquí, hagámoslo un poco más realista. Digamos brownies. Y usemos imágenes adorables de gatitos. Aunque no vamos a comer al gatito. Así que sí, esto es realmente solo para ilustración. Y ahora, esto es un poco más realista. Ahora, queremos implementar el estado no disponible. Entonces lo que voy a hacer es proporcionar un valor de ejemplo. De acuerdo, no disponible: true. Y ahora, debería poder ver cómo se ve. Entonces, div no disponible. Oh, genial. Eso se actualiza en vivo. Eso es bastante genial. Y lo voy a embellecer, dado que tengo comentarios instantáneos. Eso es bastante genial. De acuerdo. Un poco de relleno, tal vez esquinas redondeadas. Sí. Tal vez una sombra. Sombra, sí, genial. Tal vez también un borde. Borde 2, borde rojo. Ups, lo siento. Errores tipográficos, muchos errores tipográficos. De acuerdo. Eso es lo que obtienes por grabar una presentación.
10. Usando PrivyJS con Storybook y VIT
Short description:
Sigo presionando guardar cuando en realidad ni siquiera necesito guardar porque PrivyJS no requiere que guardes. PrivyJS funciona bien con Storybook. No compiten entre sí. PrivyJS es posible gracias a VIT, que es más rápido y más simple que Webpack. Usa VIT.
a las 11 pm. Vale. Sí, otro error tipográfico. Vale, genial. Sigo presionando guardar cuando en realidad ni siquiera necesito guardar porque PrivyJS no requiere que guardes. Vale, eso es bastante genial. Vale, no disponible en este momento. Vale. ¿Cómo se ve cuando lo hago más ancho? Vale, genial. Eso está bien. Vale, tal vez solo no disponible. Vale, genial. Hecho. Eso es PrivyJS en pocas palabras. Ahora, podrías preguntarte si usas PrivyJS, ¿deberías seguir usando Storybook? Y la respuesta es sí. Storybook sigue siendo una gran herramienta para documentar tus componentes y asegurarte de que hayas documentado cada variante de ellos. De hecho, PrivyJS admite mostrar tus historias. Si entro en las historias de los elementos del menú del restaurante, puedes ver que veo el mismo enlace de vista previa para cada una de las historias, y puedo verlas así, lo cual es perfecto. También puedo ver el encabezado del restaurante, todas estas cosas diferentes. Entonces, si solo estás explorando una base de código que usa Storybook y usas PrivyJS, lo tienes configurado, probablemente ni siquiera necesites iniciar Storybook. Y esto probablemente sería mucho más rápido para usar en su lugar. Así de simple. En una versión futura de PrivyJS que espero lanzar en junio o julio, también habrá una función para guardar tus props como una nueva historia. Aunque probablemente haré que eso sea parte de la versión Pro de PrivyJS, que es de pago, solo porque al final del día me gustaría poder ganar un poco de dinero con eso para poder pasar todo mi tiempo trabajando en PrivyJS en lugar de tener que apretujarlo en mi tiempo libre. Pero eso es lo básico. PrivyJS funciona muy bien con Storybook. Puedes usar ambos. No compiten entre sí. PrivyJS solo es posible gracias a un par de innovaciones recientes en herramientas web, especialmente una llamada VIT, que es prácticamente una alternativa a Webpack que es significativamente más simple de configurar y también mucho más rápido. Tu experiencia de desarrollo con VIT es que actualizas un archivo y en cuestión de milisegundos, se actualizará. Es por eso que PrivyJS puede hacer Privy mientras escribes. La única razón por la que eso es posible es porque utiliza VIT en el fondo. Si quieres sacar algo de esta charla, aparte de usar PrivyJS, por supuesto,
11. Configuración de PrivyJS y Configuración de Componentes
Short description:
PrivyJS es fácil de configurar y puede ahorrarte muchas horas por semana. Utiliza Visual Studio Code como el IDE compatible y configura un componente envolvente para mostrar tus componentes correctamente. Asegúrate de importar styles.globals.css para una mejor apariencia. Si encuentras errores, repórtalos en GitHub. Visita PrivyJS.com para obtener más información y sígueme en Twitter para recibir comentarios.
utiliza VIT. Pruébalo. Es más fácil de configurar de lo que crees, y podría ahorrarte literalmente muchas, muchas horas por semana. Si quieres configurar PrivyJS con tu proyecto, hay algunos pasos que debes seguir. Para ser honesto, en este momento, no es la experiencia más fluida, desafortunadamente. A menos que uses Create React App o algo muy simple, en cuyo caso esperemos que funcione sin problemas.
Lo primero es asegurarte de utilizar un IDE compatible, ya sea Visual Studio Code o IntelliJ slash WebStorm. Si no estás seguro de cuál usar, utiliza Visual Studio Code porque la versión de IntelliJ tiene algunos errores, para ser honesto. Estoy trabajando en eso. Y luego, lo siguiente es configurarlo para mostrar tus componentes correctamente, porque por defecto, lo que hará PreviewJS es simplemente mostrar el componente en una aplicación completamente vacía, lo cual no es perfecto. Si, por ejemplo, necesitas que haya algún CSS global. La forma de hacerlo es configurando un componente envolvente. Permíteme mostrarte cómo se ve eso en mi aplicación hungry. Aquí está previewjs.wrapper.tsx, y eso es prácticamente toda la configuración que tenemos. Eso es todo, toda la configuración. Lo importante aquí es esta importación de styles.globals.css. Sin esto, se vería muy feo, permíteme mostrarte a qué me refiero. De acuerdo, así que tengo esto, y lo voy a eliminar solo por diversión. Y va a quedar, sí, realmente roto. Porque, por supuesto, en globals o TSS, en este caso, tengo toda la configuración de Tailwind. Y también tengo un envoltorio que configura un contenedor de pantalla, así que solo estoy agregando un poco de margen para que se vea más bonito. Pero es posible que, por ejemplo, necesites configurar algún contexto de react, inicializar tu estado de redux, o cualquier otra cosa que necesites. Y si usas alias, importar alias, es posible que también necesites un par de líneas de configuración también. Como mencioné anteriormente, PrivyJS es bastante nuevo, acaba de salir en enero. Entonces, si encuentras algún error, considera informarlo en GitHub. Realmente lo apreciaría eso. Espero que después de esta charla haya tal vez un par de cientos de informes de errores. Esperemos que no tantos. Visita PrivyJS.com si quieres echarle un vistazo. Si estás en Twitter, puedes seguirme y compartir tus comentarios. Realmente espero que PrivyJS pueda mejorar un poco tu flujo de trabajo diario y hacerlo un poco más rápido. ¡Gracias!
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.
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.
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
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.
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.
This Talk discusses atomic deployment for JavaScript and TypeScript, focusing on automated deployment processes, Git hooks, and using hard links to copy changes. The speaker demonstrates setting up a bare repository, configuring deployment variables, and using the post-receive hook to push changes to production. They also cover environment setup, branch configuration, and the build process. The Talk concludes with tips on real use cases, webhooks, and wrapping the deployment process.
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.
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.
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.
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.
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.
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.
Comments