Explorando la manipulación de video y el lienzo HTML5

Rate this content
Bookmark

En esta charla relámpago estaremos empujando los límites de las API del navegador HTMl5 Canvas. Únete a nosotros mientras hacemos algunos experimentos con video en el navegador para ver qué es realmente posible. DESCARGO DE RESPONSABILIDAD: No se garantiza la compatibilidad entre navegadores. No apto para personas sensibles. Debes tener esta altura para subir. Asistir a esta charla relámpago puede resultar en lesiones graves o la muerte. Todos los participantes deben traer un chaleco salvavidas.

Dylan Jhaveri
Dylan Jhaveri
16 min
17 Jun, 2021

Video Summary and Transcription

La charla de hoy en React Summit se centró en las API de Canvas y video HTML5, mostrando las capacidades y posibilidades que ofrecen para la manipulación e interactividad de video. El orador demostró cómo usar el elemento de video HTML5 y el lienzo para manipular y dibujar imágenes, aplicar filtros y agregar superposiciones de texto en tiempo real. También mostraron la detección de objetos en tiempo real en los fotogramas de video utilizando el aprendizaje automático. La charla concluyó con un ejemplo de cómo mejorar un sitio web de marketing con video interactivo utilizando el elemento de lienzo. En general, la charla destacó el poder y el potencial de estas API para el desarrollo de video.

Available in English

1. Introducción a las API de Canvas y HTML5 Video

Short description:

Hola a todos en React Summit. Hoy vamos a hablar sobre las API de Canvas y HTML5 Video y algunas cosas geniales que puedes hacer con ellas. Soy Dylan Javary de Mux, donde proporcionamos Video para Desarrolladores. Nos enfocamos en crear API fáciles de usar para video. Si estás interesado, hablemos.

Esto es una prueba. Hola a todos en React Summit. Estoy muy emocionado de hablarles aquí hoy. Vamos a hablar sobre las API de Canvas y HTML5 video, y algunas cosas geniales que descubrimos que puedes hacer con ellas.

Así que una breve introducción, soy Dylan Javary, trabajo en Mux. Si no has oído hablar de Mux, Mux es Video para Desarrolladores. Tal vez conozcas a Stripe, Stripe es pagos para desarrolladores, o conoces a Twilio, que son llamadas telefónicas y mensajes de texto para desarrolladores. Nos gusta ser como esas empresas, donde estamos construidos pensando primero en los desarrolladores y tratamos de crear excelentes API fáciles de usar, pero lo hacemos para video. Creamos todo tipo de herramientas, productos y API para desarrolladores que trabajan con video. No voy a hablar mucho más sobre Mux hoy, pero si estás interesado, ven a hablar conmigo.

2. Introducción a la Aplicación React y al Componente Reproductor

Short description:

Me encantaría hablar contigo. Comencemos con una demostración simple de una aplicación React utilizando el componente reproductor y el canvas. El componente reproductor es un elemento de video que utiliza la tecnología HLS para la transmisión de video.

Me encantaría hablar contigo. Genial, así que ahora vamos a ver algo de código. Tengo este código sandbox configurado. Por cierto, Code Sandbox es una gran herramienta. Se ha convertido en una de mis piezas de software favoritas. Creo que hay algunas personas de Code Sandbox aquí en esta conferencia, así que un saludo para todos ustedes. Me encanta este producto. Y lo compartiré después para que puedas hacer un fork, jugar con el código, hacer tus propias cosas.

Y empecemos con una demostración muy sencilla. Esta es una aplicación React muy sencilla. Tenemos algunas rutas diferentes. Estos cinco ejemplos diferentes que voy a mostrar utilizan React Router y React DOM. Y empecemos con el primero. Empecemos con una demostración simple. Aquí tenemos simple.js. Este es el componente que estamos renderizando. Tenemos este componente reproductor y luego tenemos este canvas. Y ahora mismo, no puedes ver el canvas en la página, pero eso es lo que haremos. Lo manipularemos y haremos cosas divertidas a medida que avancemos.

Así que rápidamente, echemos un vistazo a este componente reproductor. Este componente reproductor es... En realidad, solo es un elemento video. Pero si estás familiarizado con los video... ¿Cuántos de ustedes han utilizado video en Internet? Ya sea transmisión de video, video a pedido o transmisión en vivo, algo así. Es posible que hayas utilizado el elemento video antes y tal vez hayas utilizado un archivo MP4 y eso puede funcionar. Pero cuando realmente quieres hacer una transmisión de video correctamente, lo que necesitas hacer es utilizar algo como HLS. HLS es una tecnología que te permite descargar videos en segmentos y en diferentes tasas de bits y niveles de calidad según el ancho de banda del usuario. Eso es algo que Mux hace por ti. No vamos a profundizar demasiado en eso. Pero eso es lo que estamos utilizando aquí en este reproductor de video.

3. Explorando el Elemento de Video HTML5 y el Canvas

Short description:

Entonces, este es el elemento de video HTML5 con JavaScript adicional para capacidades HLS. Cuando se dispara el evento de reproducción, se llama a la función onPlayCallback. El video se duplica en un elemento de lienzo debajo. El código utiliza el elemento de video y un contexto de lienzo para manipular y dibujar imágenes en el lienzo. La función drawImage copia cada fotograma del elemento de video en el lienzo. Vamos a dar un paso más y ver el ejemplo de filtro.

Entonces, esto es... En realidad, solo es el elemento de video HTML5. Y luego adjuntamos algo de JavaScript adicional para darle capacidades HLS. Y luego, cuando se dispara el evento de reproducción, ese evento de reproducción es cuando comienza la reproducción en el video, y vamos a llamar a esta función onPlayCallback.

Entonces, volvamos al componente que está renderizando esta página. Ampliemos un poco aquí. Asegurémonos de que puedas ver eso. Entonces, aquí mismo, tenemos el reproductor, onPlayCallback. Y cuando eso se dispara, veamos qué sucede. Lo que vemos es que este video se reproduce en el elemento de video. Y luego se duplica en este elemento de lienzo justo debajo.

Veamos un poco de este código. Entonces, cuando se llama a onPlay, obtenemos el elemento de video, y creamos este contexto, esta referencia de contexto. Lo que esto es, es una especie de controlador para el elemento de lienzo. Y luego podemos llamar a funciones en ese contexto que nos permite manipular ese elemento de lienzo, cambiar cómo se muestra, y eso es como nuestro gancho para manipular el lienzo real en sí. Entonces, en onPlay, llamamos a requestAnimationFrame, llamamos a updateCanvas. Y lo que eso va a hacer es simplemente llamar a esta línea, drawImage, le pasamos ese elemento de video. Y esto le dice al lienzo que simplemente dibuje esta imagen en el lienzo. Y estas son las dimensiones. Estas son las coordenadas donde comenzar y estas son las dimensiones para dibujar. Y esto se llama recursivamente en realidad. Entonces, cada vez que se ejecuta esto, solicitamosAnimationFrame nuevamente, y luego la función de devolución de llamada llama a updateCanvas nuevamente. Entonces puedes ver lo que está sucediendo. Simplemente estamos dibujando eso, básicamente estamos copiando ese elemento de video en el lienzo y justo debajo. Así es como funciona eso. Una rápida demostración de lo que hicimos allí. Elemento de video, copiar cada fotograma, dibujarlos en el lienzo, bastante simple, ¿verdad?

Entonces, ahora vamos a dar un paso más. Vamos a ver este ejemplo de filtro. Entonces, lo que hace el filtro, podría reproducir, está bien, algo similar, pero puedes ver que algo más está sucediendo aquí. Lo que estamos haciendo es lo mismo, la función de devolución de llamada updateCanvas.

4. Manipulando el Canvas y los Fotogramas de Video

Short description:

Podemos manipular y trabajar con datos de imagen en bruto desde el lienzo. Al iterar a través de los datos de imagen y ajustar los valores de color, podemos lograr efectos como escala de grises. Además, podemos agregar texto encima del lienzo, lo que permite modificaciones en tiempo real. Esto abre posibilidades para la manipulación interactiva de video utilizando las APIs del navegador. Veamos más ejemplos, incluyendo la extracción de fotogramas individuales de un video y su manipulación. El video que estamos utilizando es Big Buck Bunny, un ejemplo popular en la comunidad de transmisión de video.

Y lo que hacemos es dibujar esa imagen en el lienzo. Extraemos los datos de imagen del lienzo. Y ahora tenemos datos de imagen en bruto con los que realmente podemos manipular y trabajar. Y vamos a iterar a través de esos datos de imagen y vamos a jugar con los valores de color. Podemos promediar, si promediamos los valores de rojo, verde y azul, eso nos dará este efecto de escala de grises. Así que en realidad estamos manipulando la imagen fotograma a fotograma del video, y luego volviéndola a dibujar en el lienzo. Y puedes ver que tiene ese efecto. Y puedes ver que este lienzo siempre se mantiene sincronizado con el fotograma del video que el elemento de video está reproduciendo.

Muy genial, ¿verdad? Así que veamos los pasos que hicimos allí donde llevamos esto un poco más lejos. Entonces, en lugar de simplemente dibujar cada fotograma en el lienzo, después de hacer eso, extraemos el fotograma, manipulamos los colores a una escala de grises, y luego lo volvemos a dibujar en el lienzo. Muy bien. Ahora tenemos algunos ejemplos más. Veamos qué más podemos hacer. Cada vez será mejor. Layla, esta es la perra de mi compañero de trabajo Phil. Y veamos este ejemplo. Entonces, ahora en la función de actualización del lienzo, dibujamos la imagen, y luego simplemente vamos a agregar este texto Phil en el lienzo. Entonces, lo que estamos haciendo allí es simplemente agregar texto encima del lienzo. Así que estamos renderizando la imagen del video en el lienzo, y luego simplemente agregando texto encima. Ahora puedes imaginar que esto podría ser bastante útil, ¿verdad? Si tenemos un video, y ese video lo estamos reproduciendo, si simplemente presionamos este elemento de video y lo reproducimos y lo dibujamos en el lienzo, entonces podemos hacer todas estas cosas geniales como agregar texto en tiempo real, hacer todas estas cosas geniales en tiempo real, fotograma a fotograma en el lado del cliente en el navegador, todo con estas APIs del navegador. Ahí es donde agregamos un nombre. Veamos qué más podemos hacer.

Muy bien. Ahora veamos este. Esto se llama clasificar. Entonces, lo que hemos visto es que podemos obtener fotogramas individuales del video en tiempo real, dibujarlos en un lienzo, y antes de dibujarlos en el lienzo, podemos manipularlos, ¿verdad? Entonces, ¿qué más podemos hacer? Cuando tenemos un fotograma en bruto de un video, pensemos en qué más podemos hacer. Entonces, este video, si no reconoces este video, es Big Buck Bunny. Es como el ejemplo canónico de `Hola Mundo` en el mundo de la transmisión de video. He visto este video demasiadas veces y es un buen ejemplo.

5. Detección de Objetos en Tiempo Real y Casos de Uso

Short description:

En esta demostración de clasificación, ejecutamos la detección de objetos mediante aprendizaje automático en cada fotograma de video, dibujando rectángulos alrededor de los objetos detectados. Utilizamos el modelo TensorFlow Cocoa SSD para detectar objetos en tiempo real. Al extraer datos de imagen del lienzo, podemos mapear las predicciones y dibujar cuadros con etiquetas en el video. Aunque no es perfecto para contenido animado, puede detectar objetos de la vida real con precisión. Esto abre posibilidades para la detección de objetos en tiempo real en transmisiones de video en vivo. Veamos más casos de uso.

Para los propósitos de esta demostración de clasificación, vamos a reproducir el video. Y si observas lo que está sucediendo, en cada fotograma del video, ejecutamos una funcionalidad de detección de objetos mediante aprendizaje automático en cada fotograma de imagen, y puedes ver que, y luego dibujamos el rectángulo después de detectar el objeto en el fotograma. Y en este momento cree que es una persona, avancemos un poco más, ahora cree que es un pájaro. Así que en realidad estamos detectando fotograma a fotograma, qué está sucediendo con los objetos en este video. Veamos el código. Dibujamos la imagen en el contexto, extraemos los datos de imagen. Y estos son los mismos datos de imagen en los que estábamos manipulando los colores, pero aquí tenemos esta llamada adicional, que es model.detect y pasamos esos datos de imagen. Entonces, model es algo que proviene de este modelo TensorFlow Cocoa SSD, que es este modelo TensorFlow que realizará la detección de objetos en imágenes. Está diseñado para trabajar con imágenes. Y cuando pasamos estos datos de imagen que hemos extraído del lienzo, se ejecutará la detección de objetos y nos devolverá un conjunto de predicciones que ellos llaman así, ¿de acuerdo? Ahora, una vez que tenemos un conjunto de predicciones, podemos pasarlas a esta función de contorno que mapeará esas predicciones. Tiene las coordenadas X, Y, el ancho y la altura de esta caja delimitadora. Y luego podemos dibujar esas cajas con las etiquetas directamente en ese elemento de lienzo que ya estamos utilizando para renderizar el video. Así que puedes ver que cree que es un pájaro, sigue creyendo que es un pájaro. Y un perro, vimos que había un perro por un segundo, aquí cree que es una pelota deportiva. Entonces, ya sabes, no es la detección de objetos más precisa para este contenido animado. Ahora es una oveja, se parece a una oveja, pero en realidad podemos hacer cosas bastante geniales. Y recuerda, esto sucede en tiempo real. Así que ni siquiera necesariamente, muchas veces cuando haces detección de imágenes en un video, lo harías fuera de banda, en un servidor, una vez que el video esté finalizado. Pero imagina que esto fuera una transmisión en vivo, ¿verdad? Si estamos lidiando con una transmisión en vivo de video, podríamos ejecutar esto en el cliente y detectar objetos en tiempo real. Y, ya sabes, las posibilidades son infinitas y podemos hacer todo tipo de cosas con la detección que estamos haciendo. Veamos otro ejemplo de clasificación. Vamos a mostrar nuevamente a Laila, la perra de Phil, y puedes ver aquí, TensorFlow para un video en vivo real. Es el tipo de perro, en realidad es bastante bueno detectando cosas de la vida real, cosas animadas, conejos gigantes animados, tal vez no tanto, pero un perro sí puede detectarlo. Así que eso es una revisión rápida de lo que hicimos allí. La parte clave a tener en cuenta es que una vez que obtenemos imágenes en un lienzo, podemos extraer esos datos de imagen en bruto. Y luego este círculo rojo donde estamos haciendo detección de objetos en tiempo real, reemplazar eso con cualquier cosa, ¿verdad? Manipular los colores, agregar superposiciones de texto. Y luego podemos volver a dibujar eso en el lienzo y utilizar todas las APIs del lienzo que están disponibles. Eso es lo que hicimos allí. Ahora, echemos un vistazo rápido a algunos casos de uso del mundo real.

6. Mejorando el Sitio Web de Marketing con Video Interactivo

Short description:

Recientemente hicimos una actualización de diseño en nuestro sitio web de marketing, agregando una demostración de API en la sección principal. Anteriormente, teníamos un solo video, pero esta vez queríamos que fuera más interactivo. Al usar una estrategia de copiar fotogramas de un elemento de video y renderizarlos en elementos de lienzo, logramos los efectos deseados. Este enfoque eliminó la necesidad de transmisión doble, evitó problemas de sincronización de reproducción y permitió una experiencia más interactiva. Si estás interesado en video, ¡hablemos!

Nosotros en Mux, en realidad usamos esto en nuestro sitio web de marketing recientemente. Así que recientemente hicimos una actualización de diseño en nuestro sitio web de marketing y tenemos esta demostración de API en la sección principal y puedes ver qué está sucediendo aquí. Antes, en nuestro sitio de marketing antes de esta iteración, teníamos una demostración de API similar pero era todo un solo video. Así que puedes imaginar si todo esto aquí fuera solo un video con este dispositivo y el navegador emergiendo, eso funcionaba bastante bien pero esta vez queríamos mejorarlo.

Lo que estábamos pensando es que te darás cuenta de que cuando paso el cursor sobre esto, emerge. Si paso el cursor sobre el navegador y el navegador emerge puedo copiar texto aquí. Puedo interactuar con él. Eso es lo que queremos hacer. Digamos que un desarrollador viene aquí y quiere copiar este texto o, ya sabes, simplemente hacerlo más interactivo. También tenemos estos colores que se desbordan en el fondo que queremos que se desborden fuera de los límites de este elemento y se desborden en la cabecera superior y se desborden en la parte inferior. Y si esto fuera solo un video estático no podríamos obtener ese efecto.

Entonces, la forma en que logramos esto tengo un ejemplo de storybook aquí. Entonces, la forma en que realmente pudimos hacer esto es a través de la estrategia que describí. Así que en realidad inspeccionamos estos elementos. De acuerdo, inspeccionamos estos elementos. Puedes ver que esto aquí es un lienzo. Permíteme reproducir esto. Y luego vemos que esto aquí es otro lienzo. Y luego, si miramos más abajo aquí en el DOM, podemos ver que hay un elemento video. Entonces este es el elemento video que está transmitiendo el video. Y luego estamos copiando los fotogramas de ese video y renderizándolos en estos dos elementos de lienzo en tiempo real. Entonces, los beneficios de esa estrategia, alternativamente, podríamos sacar el mismo diseño y tener este navegador como un elemento video y este dispositivo como otro elemento video. Y eso funcionaría bien. Excepto que la desventaja de eso es, en primer lugar, estamos transmitiendo el mismo video dos veces, lo que duplicará el ancho de banda, más ancho de banda para el usuario. Más datos de video que se descargan parece innecesario y repetitivo. En segundo lugar, los dos videos podrían desincronizarse, ¿verdad? Como si un video se almacenara en búfer y tienes una conexión lenta y el otro aún no se ha almacenado en búfer, entonces puede haber una sincronización de reproducción por lo que probablemente tendríamos que escribir algo de JavaScript que mantenga los cabezales de reproducción alineados y sincronizados y eso parece un poco defectuoso, no es una gran solución. Entonces, lo que hicimos es aplicar la estrategia de tomar este elemento video, tomar los fotogramas de ese elemento video, y renderizarlos en el lienzo. Y de esa manera, estos dos lienzos siempre estarán sincronizados. Solo estamos descargando el video una vez. Funciona bien y reproduzcamos esto una vez más. Y esa es la solución a la que llegamos. Entonces, te darás cuenta de que ahora puedo pasar el cursor sobre esto, pasar el cursor sobre esto y los dispositivos emergen y es más interactivo. Puedo copiar código y ahora este video, este es un video de feliz cumpleaños para React Summit. Es un video que encontré en línea de niños llorando cuando soplan las velas de su cumpleaños y es bastante divertido. Así que feliz cumpleaños React Summit. Estoy emocionado de estar aquí, emocionado de hablar con todos ustedes. Y si tienes algo de qué hablar sobre video, me encantaría charlar. Si estás agregando video a tu producto, construyendo video, haciendo cosas geniales, por favor, charla conmigo y gracias por tenerme. Encuéntrame en Twitter, DylanJAJ y eso es todo. Gracias.

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

Don't Solve Problems, Eliminate Them
React Advanced Conference 2021React Advanced Conference 2021
39 min
Don't Solve Problems, Eliminate Them
Top Content
Humans are natural problem solvers and we're good enough at it that we've survived over the centuries and become the dominant species of the planet. Because we're so good at it, we sometimes become problem seekers too–looking for problems we can solve. Those who most successfully accomplish their goals are the problem eliminators. Let's talk about the distinction between solving and eliminating problems with examples from inside and outside the coding world.
Jotai Atoms Are Just Functions
React Day Berlin 2022React Day Berlin 2022
22 min
Jotai Atoms Are Just Functions
Top Content
Jotai is a state management library. We have been developing it primarily for React, but it's conceptually not tied to React. It this talk, we will see how Jotai atoms work and learn about the mental model we should have. Atoms are framework-agnostic abstraction to represent states, and they are basically just functions. Understanding the atom abstraction will help designing and implementing states in your applications with Jotai
Debugging JS
React Summit 2023React Summit 2023
24 min
Debugging JS
Top Content
As developers, we spend much of our time debugging apps - often code we didn't even write. Sadly, few developers have ever been taught how to approach debugging - it's something most of us learn through painful experience.  The good news is you _can_ learn how to debug effectively, and there's several key techniques and tools you can use for debugging JS and React apps.
Fighting Technical Debt With Continuous Refactoring
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt. In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.
AHA Programming
React Summit Remote Edition 2020React Summit Remote Edition 2020
32 min
AHA Programming
Top Content
Are you the kind of programmer who prefers to never see the same code in two places, or do you make liberal use of copy/paste? Many developers swear the Don't Repeat Yourself (DRY) philosophy while others prefer to Write Everything Twice (WET). But which of these produces more maintainable codebases? I've seen both of these approaches lay waste to codebases and I have a new ideology I would like to propose to you: Avoid Hasty Abstractions (AHA). In this keynote, we'll talk about abstraction and how you can improve a codebase applying and creating abstractions more thoughtfully as well as how to get yourself out of a mess of over or under-abstraction.
The Epic Stack
React Summit US 2023React Summit US 2023
21 min
The Epic Stack
Top Content
Modern web development is fantastic. There are so many great tools available! Modern web development is exhausting. There are so many great tools available! Each of these sentiments is true. What's great is that most of the time, it's hard to make a choice that is wrong. Seriously. The trade-offs of most of the frameworks and tools you could use to build your application fit within the constraints of the vast majority of apps. Despite this, engineers consistently struggle with analysis paralysis.Let's talk about this, and a solution I am working on for it.

Workshops on related topic

React, TypeScript, and TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript, and TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported.

The two together? Not as much. Given that they both change quickly, it's hard to find accurate learning materials.

React+TypeScript, with JetBrains IDEs? That three-part combination is the topic of this series. We'll show a little about a lot. Meaning, the key steps to getting productive, in the IDE, for React projects using TypeScript. Along the way we'll show test-driven development and emphasize tips-and-tricks in the IDE.
Web3 Workshop - Building Your First Dapp
React Advanced Conference 2021React Advanced Conference 2021
145 min
Web3 Workshop - Building Your First Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
In this workshop, you'll learn how to build your first full stack dapp on the Ethereum blockchain, reading and writing data to the network, and connecting a front end application to the contract you've deployed. By the end of the workshop, you'll understand how to set up a full stack development environment, run a local node, and interact with any smart contract using React, HardHat, and Ethers.js.
Remix Fundamentals
React Summit 2022React Summit 2022
136 min
Remix Fundamentals
Top Content
Featured WorkshopFree
Kent C. Dodds
Kent C. Dodds
Building modern web applications is riddled with complexity And that's only if you bother to deal with the problems
Tired of wiring up onSubmit to backend APIs and making sure your client-side cache stays up-to-date? Wouldn't it be cool to be able to use the global nature of CSS to your benefit, rather than find tools or conventions to avoid or work around it? And how would you like nested layouts with intelligent and performance optimized data management that just works™?
Remix solves some of these problems, and completely eliminates the rest. You don't even have to think about server cache management or global CSS namespace clashes. It's not that Remix has APIs to avoid these problems, they simply don't exist when you're using Remix. Oh, and you don't need that huge complex graphql client when you're using Remix. They've got you covered. Ready to build faster apps faster?
At the end of this workshop, you'll know how to:- Create Remix Routes- Style Remix applications- Load data in Remix loaders- Mutate data with forms and actions
Vue3: Modern Frontend App Development
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Modern Frontend App Development
Top Content
Featured WorkshopFree
Mikhail Kuznetcov
Mikhail Kuznetcov
The Vue3 has been released in mid-2020. Besides many improvements and optimizations, the main feature of Vue3 brings is the Composition API – a new way to write and reuse reactive code. Let's learn more about how to use Composition API efficiently.

Besides core Vue3 features we'll explain examples of how to use popular libraries with Vue3.

Table of contents:
- Introduction to Vue3
- Composition API
- Core libraries
- Vue3 ecosystem

Prerequisites:
IDE of choice (Inellij or VSC) installed
Nodejs + NPM
Developing Dynamic Blogs with SvelteKit & Storyblok: A Hands-on Workshop
JSNation 2023JSNation 2023
174 min
Developing Dynamic Blogs with SvelteKit & Storyblok: A Hands-on Workshop
Featured WorkshopFree
Alba Silvente Fuentes
Roberto Butti
2 authors
This SvelteKit workshop explores the integration of 3rd party services, such as Storyblok, in a SvelteKit project. Participants will learn how to create a SvelteKit project, leverage Svelte components, and connect to external APIs. The workshop covers important concepts including SSR, CSR, static site generation, and deploying the application using adapters. By the end of the workshop, attendees will have a solid understanding of building SvelteKit applications with API integrations and be prepared for deployment.
Back to the Roots With Remix
React Summit 2023React Summit 2023
106 min
Back to the Roots With Remix
Featured Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
The modern web would be different without rich client-side applications supported by powerful frameworks: React, Angular, Vue, Lit, and many others. These frameworks rely on client-side JavaScript, which is their core. However, there are other approaches to rendering. One of them (quite old, by the way) is server-side rendering entirely without JavaScript. Let's find out if this is a good idea and how Remix can help us with it?
Prerequisites- Good understanding of JavaScript or TypeScript- It would help to have experience with React, Redux, Node.js and writing FrontEnd and BackEnd applications- Preinstall Node.js, npm- We prefer to use VSCode, but also cloud IDEs such as codesandbox (other IDEs are also ok)