Medición de la Cobertura del Sistema de Diseño React

Rate this content
Bookmark

Los sistemas de diseño se están volviendo cada vez más populares en el desarrollo de front-end moderno. Sin embargo, medir el uso y la cobertura de estos sistemas de diseño a menudo es un desafío. En esta charla relámpago, hablaré sobre una herramienta en la que estamos trabajando que utiliza react-scanner y Árbol de Sintaxis Abstracta (AST) con scripts personalizados para generar datos de uso de componentes para un sistema de diseño React.


La charla cubrirá cómo generamos estos datos y cómo se representan en un panel para proporcionar información valiosa sobre la cobertura del sistema de diseño.


- Introducción a react-scanner

- Medición del uso de componentes

- Identificación de elementos HTML nativos y componentes estilizados

- Mostrando la estructura del árbol de la página en términos de componentes

- Destacando patrones anti

- Beneficios / Casos de uso para esta herramienta

This talk has been presented at React Advanced 2023, check out the latest edition of this React Conference.

FAQ

Fabric es una startup de comercio electrónico con sede en EE. UU. que utiliza la arquitectura de micro front-end para construir su producto.

Karen tiene más de seis años de experiencia en el dominio de front-end y ha trabajado anteriormente con empresas como Razorpay y Ripple Foods en India.

Un sistema de design en desarrollo web se refiere a un conjunto coordinado de normas, componentes y herramientas que permiten mantener la consistencia y eficiencia en el diseño y desarrollo de productos digitales.

React Scanner es un paquete de NPM que puede analizar estáticamente el código y extraer detalles de los componentes, incluyendo sus props, ayudando a medir la cobertura y uso de los sistemas de design en aplicaciones.

Al migrar del sistema de design DS 3.0 al 4.0, se buscó medir el uso de los componentes del sistema antiguo en comparación con el nuevo, lo que implicó retos en identificar componentes, elementos HTML nativos y componentes de estilo.

Los anti-patterns son prácticas que se consideran incorrectas en términos de diseño y resolución de problemas. Se identificaron usando React Scanner y ayudó a detectar problemas como el uso de colores codificados en lugar de tokens del sistema de design.

La reestructuración de componentes se utilizó para organizar mejor la estructura de los componentes en las páginas, permitiendo identificar y optimizar anti-patterns y mejorar la eficiencia del sistema de design.

Karan Kiri
Karan Kiri
11 min
23 Oct, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Karen discute la medición de la cobertura de un sistema de diseño utilizando React Scanner. La herramienta ayuda a analizar el código y extraer detalles de componentes, permitiendo la medición del uso de componentes e identificación de patrones. El análisis también revela patrones anti en el consumo del sistema de diseño. Al reestructurar los componentes, se pueden tomar decisiones basadas en datos para optimizar el uso de componentes a nivel de ruta y abordar los patrones anti.

1. Introducción a la Medición de Cobertura del Sistema de Diseño

Short description:

Hola, mi nombre es Karen. Voy a hablar sobre cómo medir la cobertura de un sistema de diseño. Nuestro producto actual está construido utilizando la arquitectura de micro front-end. Migramos del sistema de diseño 3.0 al 4.0 y queríamos medir el uso de los componentes. Encontramos una solución con React Scanner, un paquete NPM que puede analizar el código y extraer detalles del componente.

Hola, mi nombre es Karen. Actualmente trabajo en una startup llamada Fabric. Es una startup de comercio electrónico con sede en EE. UU. Anteriormente trabajé con Razorpay y Ripple Foods en India. Tengo un total de más de seis años de experiencia en el dominio de front-end.

Así que hoy estaré hablando sobre cómo medir la cobertura de un sistema de design. Para darles un poco de contexto sobre lo que es nuestro producto actual, está construido utilizando la arquitectura de micro front-end architecture. Usamos singles para React, Apps Script, y componentes de estilo. Entonces, como pueden ver en la parte del encabezado, hay diferentes productos, cada uno es un micro front-end diferente y tiene diferentes tipos de productos como gestión de productos, gestión de pedidos, gestión de cupones, gestión de clientes. Así es como se ve el producto.

Así que estábamos construyendo un sistema de design en TypeScript desde cero. Teníamos nuestro antiguo sistema de design DS 3.0 en JavaScript. Así que cuando migramos al sistema de design 4.0, que es nuestro nuevo sistema de design, queríamos medir nuestra cobertura. Así que la declaración del problema parecía algo así. Queríamos medir cuáles son los componentes DS 3 como cuál es el uso del componente del sistema de design antiguo y el uso del componente del nuevo sistema de design 4.0. Elementos HTML nativos que se estaban utilizando en nuestras aplicaciones y cualquiera de los componentes de estilo que se estaban utilizando. Y el último punto extra es describir su ruta de página en una estructura de árbol utilizando nuestros componentes.

Entonces, cada vez que tenemos algún problema lo que generalmente hacemos es buscarlo en Google. Y luché en Google para encontrar una solución. Luego aterricé en este hermoso paquete de NPM llamado React Scanner. Básicamente, React Scanner es un paquete de NPM que puede analizar estáticamente su código y puede extraer los detalles de su componente incluyendo sus props y todo. Así que para entrar en detalles he creado este componente React de muestra. Aquí pueden ver en el componente de la aplicación que estamos utilizando algún contenedor de proveedor y tenemos texto y tenemos el componente de enlace aquí. Así que aquí pueden ver que el React Scanner puede generar como salida en algunos formatos diferentes. Uno de ellos es la salida en bruto. Así que para la salida en bruto da como todos los detalles de una instancia en particular. Así que en base al proveedor tendrá una matriz de instancias. Así que en la primera instancia tiene como información de importación de dónde estamos importando este componente sus props y dónde está en el archivo. Y en la salida procesada aquí pueden ver que tiene como información procesada o acumulativa como cuál es el número de instancias del componente de texto, sus props, y todo lo que pueden ver aquí. Entonces, ¿cómo funciona React Scanner? Así que React Scanner, lo que hace es que lee el archivo y luego analiza el código en AST básicamente árbol de sintaxis abstracta.

2. Medición del Uso de Componentes e Identificación de Patrones

Short description:

Es una representación en árbol de su código. Pudimos generar un panel de control que muestra el uso de los componentes DS3 y DS4. Identificamos elementos HTML nativos y componentes de estilo utilizando un script personalizado. Además, detectamos anti-patrones en el consumo del sistema de diseño.

Es una representación en árbol de su código. Y luego recorre el AST y recopila la información como el nombre del componente, información de importación, información de prop, data. Como recopila data y luego la devuelve en formato JSON. Entonces, usando esos data, pudimos generar este hermoso panel de control que pueden ver aquí. Podemos ver para esta aplicación en particular Copilot MFA admin. Estábamos usando tantos componentes DS3 y tantos componentes DS4 y el número de instancias de cada uno de los componentes también lo podemos ver aquí.

Entonces, la primera parte de nuestro problema se resolvió pero aún necesitábamos resolver algunos puntos como elementos nativos HTML, componentes de estilo, estructura de componentes y anti-patterns. Entonces, lo primero que hicimos fue hacer un fork del repositorio de React Scanner y ahora estamos manteniendo una copia del scanner en nuestra base de código. Entonces, identificar elementos nativos HTML es una tarea muy sencilla. Solo necesitas leer el nombre de los elementos JSX y necesitas verificar si es un elemento en minúsculas y no debería contener ningún punto. Si se cumplen estas dos condiciones entonces puedes decir que este componente JSX es un elemento HTML. Entonces, basándonos en estas condiciones pudimos identificar aquí pueden ver que pude identificar la etiqueta A, H1 y P en estos archivos.

La siguiente parte difícil fue identificar los componentes de estilo. Entonces, estos componentes de estilo no estaban en el paquete de React Scanner. Entonces, tuvimos que construir por nuestra cuenta escribiendo un script personalizado. Entonces, pueden ver que podemos declarar los componentes de estilo en dos estilos de código separados. Aquí pueden ver que estamos usando style dot button y estamos usando la función de estilo en el botón base. Entonces, esta sintaxis se llama literales de plantilla de etiquetas. Entonces, aquí está el código que devolvemos para identificar los componentes de estilo. Entonces, básicamente queríamos identificar de dónde se construyó este botón base, como si se construyó sobre algún componente existente o algún elemento HTML. Aquí pueden ver que este botón base se construyó sobre el botón, pero este botón primario se construyó sobre el botón base. Entonces, usando este script, no solo el nombre del componente, sino que también pudimos recopilar el CSS en bruto que se escribieron en las aplicaciones. Entonces, aquí pueden ver que estamos recopilando CSS en bruto de estilo y ruta de archivo. Y el estilo de básicamente contiene de dónde se construyó el componente de estilo. Y la última parte son los anti-patterns. Entonces, los anti-patterns es un término que describe cómo no resolver tus problemas recurrentes. Entonces, ¿qué anti-patterns podríamos tener en términos de consumo del sistema de design es que algunos de los ejemplos podrían ser como usar un color codificado en lugar de nuestro token del sistema de design o como usar un ancla o entrada o botón. Elemento HTML, en lugar de usarlo desde nuestro sistema de design. Entonces, estos son algunos de los anti-patterns que queríamos identificar. Entonces, usando toda esta información que obtuvimos de este scanner, pudimos mostrar esa información en nuestro panel de control.

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

Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Construir un Sistema de Diseño con React y Tailwind CSS
React Summit 2022React Summit 2022
27 min
Construir un Sistema de Diseño con React y Tailwind CSS
Top Content
This Talk discusses design systems and how to build one using React and Tailwind CSS. Tailwind CSS provides utility classes for building complex layouts without writing CSS rules. Custom colors can be added to the Tailwind CSS config file, and font styles and text sizes can be customized. The entire Tailwind CSS configuration can be customized to meet specific requirements. Base styles can be added to the config file itself using a plugin. Reusable components can be created with Tailwind CSS, allowing for easy customization of size and color.
Caminando en la línea entre la flexibilidad y la consistencia en las bibliotecas de componentes
React Summit 2022React Summit 2022
27 min
Caminando en la línea entre la flexibilidad y la consistencia en las bibliotecas de componentes
This Talk discusses the comparison between Polaris and Material UI component libraries in terms of consistency and flexibility. It highlights the use of the action list pattern and the customization options available for the action list component. The Talk also emphasizes the introduction of a composite component to improve API flexibility. Additionally, it mentions the importance of finding the right balance between flexibility and consistency and the use of types to enforce specific child components.
Descubre si tu sistema de diseño es mejor que nada
React Summit 2022React Summit 2022
20 min
Descubre si tu sistema de diseño es mejor que nada
Building a design system without adoption is a waste of time. Grafana UI's adoption is growing consistently over time. The factors affecting design system adoption include the source mix changing, displacement of Homebrew components by Grafana UI, and the limitations of Grafana UI's current state. Measuring adoption is important to determine the success of a design system. The analysis of code through static code analysis tools is valuable in detecting and tracking component usage.
Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes
JSNation 2023JSNation 2023
10 min
Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes
The Talk discusses the use of dialogues and popovers in web development. Dialogues can be modal or non-modal and are now accessibility-supported. Popovers are versatile and can be added to any element without JavaScript. They provide suggestions, pickers, teaching UI, list boxes, and action menus. Modal and non-modal dialogues and popovers have different behaviors and dismissal methods. Browser support for these features is expanding, but there are still open questions about positioning, semantics, and other use cases.
Estilo Seguro para Paquetes de Componentes React: Vanilla Extract CSS
React Advanced 2023React Advanced 2023
19 min
Estilo Seguro para Paquetes de Componentes React: Vanilla Extract CSS
Today's Talk introduces Vanilla Extract CSS, a type-safe styling method for React applications. It combines the benefits of scoped styling, zero runtime overhead, and a great developer experience. Vanilla Extract generates a static CSS file at build time, resulting in better performance. It is framework agnostic and offers a powerful toolkit, including Sprinkles for utility classes and CSS utils for calculations. With type safety and the ability to define themes and variants, Vanilla Extract makes it easy to create efficient, scalable, and maintainable design system component packages.

Workshops on related topic

Desarrollo Rápido de UI en React: Aprovechando Bibliotecas de Componentes Personalizadas y Sistemas de Diseño
React Advanced 2022React Advanced 2022
118 min
Desarrollo Rápido de UI en React: Aprovechando Bibliotecas de Componentes Personalizadas y Sistemas de Diseño
Workshop
Richard Moss
Richard Moss
En este masterclass, recorreremos los enfoques más efectivos para construir componentes de UI escalables que mejoren la productividad y felicidad del desarrollador :-) Esto implicará una combinación de ejercicios prácticos y presentaciones, que cubrirán los aspectos más avanzados de la popular biblioteca styled-components, incluyendo la tematización e implementación de utilidades styled-system a través de props de estilo para un desarrollo rápido de UI, y culminando en cómo puedes construir tu propia biblioteca de componentes personalizada y escalable.
Nos enfocaremos tanto en el escenario ideal, donde trabajas en un proyecto nuevo, como en tácticas para adoptar incrementalmente un sistema de diseño y enfoques modernos para el estilo en una base de código existente con algo de deuda técnica (¡que suele ser el caso!). Al final del masterclass, deberías sentir que comprendes los compromisos entre diferentes enfoques y sentirte seguro para comenzar a implementar las opciones disponibles para avanzar hacia el uso de una biblioteca de componentes basada en un sistema de diseño en la base de código en la que trabajas.
Prerrequisitos: - Familiaridad y experiencia trabajando en grandes bases de código de React- Una buena comprensión de los enfoques comunes para el estilo en React