UI Configurada por Archivo de Configuración usando ReactJS

Rate this content
Bookmark
Slides

En Microsoft estamos repensando la forma en que utilizamos ReactJS como desarrolladores frontend, los patrones de diseño de UI tradicionales de React resultan en código redundante, lo que hace que el mantenimiento del código sea engorroso. Al hacer que la UI sea configurada por archivo, potenciamos los componentes de React al hacer que el archivo de configuración sea la única fuente de verdad. El enfoque anterior facilitó la incorporación rápida de nuevos escenarios de UI y con una regresión mínima en los antiguos flujos de UI, lo que resultó en una reducción significativa en los esfuerzos de desarrollo, la mejor parte es que todo el código se mantuvo solo en Typescript, no se utilizaron XML u otros lenguajes declarativos.

FAQ

La UI impulsada por configuración en ReactJS es una técnica que permite crear interfaces de usuario dinámicas y personalizables a través de archivos de configuración como JSON o TypeScript. Estos archivos definen el diseño, tamaño, posición y fuente de datos de los componentes de la UI, facilitando su modificación y reutilización sin necesidad de cambiar el código fuente.

En ReactJS, se puede implementar una UI impulsada por configuración utilizando React Hook y componentes personalizados. Se define un diseño que puede incluir componentes apilados vertical y horizontalmente, y se mapean los nodos hoja a los contenidos reales utilizando un componente personalizado llamado LayoutRenderer que analiza y renderiza los elementos de forma recursiva a partir de un archivo JSON.

Los beneficios de usar una UI impulsada por configuración incluyen mayor flexibilidad para cambiar la interfaz de usuario modificando simplemente archivos de configuración, facilidad para reutilizar componentes en diferentes páginas o escenarios y la capacidad de crear UIs dinámicas y personalizadas sin alterar el código fuente.

Los archivos de configuración para la UI pueden especificar el tipo, tamaño, posición, y fuente de datos de cada componente. Adicionalmente, pueden incluir propiedades como 'id' para identificar de manera única a los componentes, y 'children' para definir nodos hijos y crear interfaces anidadas.

En ReactJS, un LayoutRenderer es un componente personalizado que toma un archivo JSON como propiedad y utiliza React hooks para analizarlo y renderizar la UI de manera recursiva. Este componente determina si cada elemento es vertical u horizontal y renderiza todos los componentes de forma dinámica.

Joban Singh
Joban Singh
7 min
12 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla relámpago introduce el concepto de UI configurada por archivo usando ReactJS, que permite UIs dinámicas y personalizables sin codificación rígida. La técnica implica el uso de un archivo JSON para especificar el tipo, tamaño, posición y fuente de datos para cada componente. La charla también explica la estructura de los componentes de UI configurados por archivo, incluyendo elementos, contenedores verticales y horizontales, y diseños anidados.

Available in English: Config Driven UI using ReactJS

1. Introducción a la UI impulsada por configuración usando ReactJS

Short description:

Hola a todos, y bienvenidos a una charla relámpago sobre la UI impulsada por configuración usando ReactJS. La UI impulsada por configuración es una técnica que te permite crear UIs dinámicas y personalizables sin codificarlas de manera rígida. Utilizas un archivo JSON que especifica el tipo, tamaño, posición y fuente de datos para cada componente. Ahora vamos a entender esto en detalle. Tenemos una capa de UI base con un menú de asistente que consta de varios estilos. La idea es tener un solo archivo de configuración para todos los mosaicos y renderizarlos sobre la marcha leyendo la configuración. En React.js, podemos implementar esto usando React Hook y componentes personalizados. Comencemos con la parte del diseño, que utiliza una estructura recursiva para contener elementos apilados vertical y horizontalmente.

Hola a todos, y bienvenidos a una charla relámpago sobre la UI impulsada por configuración usando ReactJS. En este video, explicaré qué significa la UI impulsada por configuración y cómo podemos hacerlo en ReactJS. Pero primero, una breve introducción sobre mí. Hola chicos, soy Joban y he estado trabajando en Microsoft durante los últimos dos años y ustedes pueden contactarme en las siguientes direcciones. Y sin más preámbulos, comencemos.

Entonces, ¿qué es la configuración impulsada, verdad? Lo que significa. La UI impulsada por configuración es una técnica que te permite crear interfaces de usuario basadas en una configuración como JSON o un archivo TypeScript que define el diseño y contenido de los componentes de la UI. Esto puede ser útil para crear UIs dinámicas y personalizables sin codificarlas de manera rígida. Por ejemplo, digamos que quieres crear un tablero que muestre diferentes tipos de visualizaciones y resúmenes de datos. En lugar de escribir código JSX para cada componente y organizarlos en un diseño fijo, utilizas un archivo JSON que especifica el tipo, tamaño, posición y fuente de datos para cada componente. Y luego, puedes crear un componente personalizado que lea ese archivo JSON y renderice la UI en consecuencia. De esta manera, puedes cambiar fácilmente la UI modificando el archivo JSON sin siquiera tocar el otro código. También puedes reutilizar el mismo componente desde diferentes páginas o para diferentes escenarios proporcionando diferentes archivos JSON.

Sigamos. Ahora entendamos esto un poco en detalle. Aquí podemos ver una capa de UI base en la que hay un menú de asistente que consta de varios estilos, número uno, número dos, número tres, etc. Y cada estilo tiene un montón de componentes a, b, c, etc. La V y la H en el lado izquierdo, puedes ver, representa si la configuración del diseño de cada componente es si es un componente horizontal o vertical, ¿verdad? Llegaremos a eso qué significa. Ahora para el mosaico dos podemos tener una UI muy similar al mosaico número uno con un ligero cambio en el diseño del componente. Puedes ver aquí, lo siento. De manera similar para el mosaico número tres también tiene diferencias menores en la UI. Ahora la idea aquí es no crear archivos separados para cada estilo ya que las diferencias de UI son muy menores, ¿verdad? Pero tener un solo archivo de configuración para todos los mosaicos y renderizamos los mosaicos sobre la marcha leyendo la configuración, ¿verdad?

Entonces, ¿cómo podemos hacer esto en React.js? Bueno, hay muchas formas de implementar, para ser honesto, este paradigma de UI impulsada por configuración. Pero en esta charla te mostraré uno de los posibles enfoques usando React Hook y componentes personalizados. La idea básica es tener dos partes. Una para definir el diseño, que utiliza una estructura recursiva para contener elementos apilados vertical y horizontalmente. Y otra para mapear los nodos hoja al contenido real que necesita ser mostrado. La implementación real de una unidad más pequeña de componente, ¿verdad? Por ejemplo, un desplegable. Puede ser un formulario, puede ser un gráfico, ¿verdad? Comencemos con la parte del diseño. En la pantalla puedes ver que la parte del diseño consta de tres tipos de componentes. Primero es el elemento y luego vertical y horizontal.

2. Componentes de UI Impulsados por Configuración

Short description:

Element es el nodo hoja que representa un componente de UI. Los contenedores verticales y horizontales apilan elementos ya sea vertical u horizontalmente, incluyendo diseños anidados. Las propiedades type y config especifican el tipo de componente y el identificador único. La propiedad children crea UIs anidadas.

Element es el nodo hoja que representa un solo componente de UI, como un desplegable, un gráfico, y un formulario, como ya he dicho. Vertical y horizontal son contenedores sobre esos elementos, que nos permiten apilar elementos ya sea vertical u horizontalmente. Nos proporciona esa información. Estos contenedores también pueden estar anidados uno dentro del otro para crear diseños complejos. La propiedad type especifica el tipo de componente. La propiedad config contiene también una propiedad id, que identifica de manera única al componente. Las otras propiedades que te ayudan a dibujar el componente. La propiedad children es un array de nodos hijos que siguen el mismo formato para crear UIs anidadas. Sigamos, ahora aquí hay un ejemplo donde tenemos un archivo JSON que define un diseño simple con dos elementos apilados horizontalmente. Puedes ver en la pantalla, E1 y E2 son dos elementos apilados horizontalmente. La propiedad width especifica cuántas columnas tomará cada elemento. En el lado izquierdo, puedes ver un código de muestra, cómo podemos escribir un código para dos elementos apilados horizontalmente. Ahora, sigamos, ahora que hemos definido la parte del diseño, necesitamos renderizarlo usando React Component. Para hacer esto, creamos un componente personalizado llamado LayoutRenderer, que toma el archivo JSON como una prop y usa React hooks para analizarlo y renderizarlo de manera recursiva. Aquí puedes ver en el código para el componente LayoutRenderer donde cuando el primer componente se renderiza, estamos analizando la configuración JSON en el hook useEffect, y luego estamos usando una declaración switch para identificar si es un elemento vertical u horizontal. Y luego llamando recursivamente la misma función LayoutRenderer para cada hijo. De esta manera renderizaremos toda la UI solo llamando a la función única. Y de esta manera podemos implementar el paradigma de UI impulsada por configuración. Esto es solo rascar la superficie del problema y debido a la limitación de tiempo no puedo profundizar más, pero no dudes en contactarme para cualquier detalle adicional. Y con eso terminaré mi charla. Muchas gracias a todos por escuchar, espero haber podido justificar su tiempo. Que tengan un gran día y por favor revisen mis perfiles, mi LinkedIn, mi Twitter. Pueden contactarme en cualquier momento, estaré disponible para responder a sus preguntas. También estaré disponible en el servidor de Discord. Así que gracias de nuevo y que tengan un gran día por delante.

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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
¿Tienes un producto grande construido por muchos equipos? ¿Estás luchando para lanzar a menudo? ¿Se convirtió tu frontend en un monolito inmantenible masivo? Si, como yo, has respondido sí a cualquiera de esas preguntas, ¡esta charla es para ti! Te mostraré exactamente cómo puedes construir una arquitectura de micro frontend con Remix para resolver esos desafíos.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
Remix es un marco de trabajo web que te ofrece el modelo mental simple de una aplicación de múltiples páginas (MPA) pero el poder y las capacidades de una aplicación de una sola página (SPA). Uno de los grandes desafíos de las SPA es la gestión de la red que resulta en una gran cantidad de indirecciones y código defectuoso. Esto es especialmente notable en el estado de la aplicación que Remix elimina por completo, pero también es un problema en los componentes individuales que se comunican con un punto final de backend de un solo propósito (como una búsqueda de combobox, por ejemplo).
En esta charla, Kent demostrará cómo Remix te permite construir componentes de interfaz de usuario complejos que están conectados a un backend de la manera más simple y poderosa que hayas visto. Dejándote tiempo para relajarte con tu familia o lo que sea que hagas para divertirte.
Entendiendo la Arquitectura Fiber de React
React Advanced Conference 2022React Advanced Conference 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
Hemos escuchado mucho sobre la Arquitectura Fiber de React, pero parece que pocos de nosotros la entendemos en profundidad (o tenemos el tiempo para hacerlo). En esta charla, Tejas repasará su mejor intento de entender Fiber (revisado por otros expertos), y lo presentará de una manera 'explicar-como-si-tuviera-cinco años'.
The Eternal Sunshine of the Zero Build Pipeline
React Finland 2021React Finland 2021
36 min
The Eternal Sunshine of the Zero Build Pipeline
For many years, we have migrated all our devtools to Node.js for the sake of simplicity: a common language (JS/TS), a large ecosystem (NPM), and a powerful engine. In the meantime, we moved a lot of computation tasks to the client-side thanks to PWA and JavaScript Hegemony.
So we made Webapps for years, developing with awesome reactive frameworks and bundling a lot of dependencies. We progressively moved from our simplicity to complex apps toolchains. We've become the new Java-like ecosystem. It sucks.
It's 2021, we've got a lot of new technologies to sustain our Users eXperience. It's time to have a break and rethink our tools rather than going faster and faster in the same direction. It's time to redesign the Developer eXperience. It's time for a bundle-free dev environment. It's time to embrace a new frontend building philosophy, still with our lovely JavaScript.
Introducing Snowpack, Vite, Astro, and other Bare Modules tools concepts!
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
React Summit 2022React Summit 2022
17 min
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
Top Content
Existen muchas formas de autorizar componentes en React, y hacerlo correctamente puede no ser tan fácil, especialmente cuando los componentes se vuelven más complejos. En esta charla, aprenderás cómo construir componentes React a prueba de futuro. Cubriremos dos enfoques diferentes para construir componentes - Composición y Configuración, para construir el mismo componente utilizando ambos enfoques y explorar sus ventajas y desventajas.
Patrones de Arquitectura Remix
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Patrones de Arquitectura Remix
Top Content
Remix ofrece una increíble flexibilidad y puede ser desplegado en cualquier lugar donde se ejecute JavaScript. Pero, ¿cómo encaja Remix en el panorama de aplicaciones más amplio de una organización? Remix proporciona una gran utilidad, pero ¿cómo aprovecharla al máximo? ¿Qué cosas deberían manejarse dentro de Remix y qué cosas serían mejor hacer en otro lugar? ¿Deberíamos usar el adaptador express para agregar un servidor WebSocket o debería ser un microservicio independiente? ¿Cómo integrarán las organizaciones empresariales Remix en sus pilas actuales? ¡Hablemos de patrones de arquitectura! En esta charla, quiero compartir mis pensamientos sobre cómo integrar mejor Remix en una pila (empresarial) más grande.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicación.