Caminando en la línea entre la flexibilidad y la consistencia en las bibliotecas de componentes

Rate this content
Bookmark

Los sistemas de diseño tienen como objetivo brindar consistencia al diseño de una marca y hacer que el desarrollo de la interfaz de usuario sea productivo. Las bibliotecas de componentes con una API bien pensada pueden hacer que esto sea muy fácil. Pero, ¡a veces una elección de API puede sobrepasarse accidentalmente y ralentizar al equipo! Hay un equilibrio ahí... en algún lugar. Vamos a explorar algunos de los problemas y posibles soluciones creativas.

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

FAQ

Primer es una biblioteca de componentes React utilizada por los equipos en GitHub para desarrollar diversas funcionalidades y interfaces de usuario.

Polaris es muy opinativo con una API extremadamente estricta que conduce a resultados predecibles y consistentes, mientras que Material UI ofrece una API muy flexible, adecuada para una variedad de contextos y personalizaciones.

GitHub utiliza un enfoque centralizado con un equipo de diseño dedicado y patrones de diseño bien establecidos, lo que facilita la consistencia en el desarrollo de componentes.

Una API de configuración permite una alta especificidad y control sobre los componentes, siendo ideal para crear interfaces predecibles y consistentes.

Una API compuesta ofrece mayor flexibilidad, permitiendo que los desarrolladores personalicen componentes a través de subcomponentes o 'hijos', adaptándolos a necesidades específicas sin alterar la estructura base.

Las opiniones expresadas por los empleados, como Sid, son personales y no necesariamente reflejan las de Microsoft, a pesar de que GitHub es parte de Microsoft.

Siddharth Kshetrapal
Siddharth Kshetrapal
27 min
17 Jun, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta Charla discute la comparación entre las bibliotecas de componentes Polaris y Material UI en términos de consistencia y flexibilidad. Destaca el uso del patrón de lista de acciones y las opciones de personalización disponibles para el componente de lista de acciones. La Charla también enfatiza la introducción de un componente compuesto para mejorar la flexibilidad de la API. Además, menciona la importancia de encontrar el equilibrio adecuado entre flexibilidad y consistencia y el uso de tipos para hacer cumplir componentes secundarios específicos.

1. Introducción a las bibliotecas de componentes

Short description:

Soy Sid, un mantenedor de Primer, la biblioteca de componentes React utilizada por GitHub. Discutiré la consistencia y flexibilidad en las bibliotecas de componentes comparando Polaris y Material UI. Polaris proporciona una forma descriptiva de crear banners con varios componentes y acciones. Material UI, por otro lado, utiliza alertas en lugar de banners con diferentes niveles de gravedad e iconos personalizables.

Entonces, vamos allá. Soy Sid. Trabajo en el equipo del sistema de diseño en GitHub y soy uno de los mantenedores de Primer, que es la biblioteca de componentes React que otros equipos en GitHub utilizan para construir las cosas que realmente te gusta usar.

Antes de comenzar, quiero dar una advertencia. GitHub ahora es parte de Microsoft, así que tengo que decir esto, estas opiniones son mías y no de mi empleador todavía. Estoy tratando de cambiarlas, estoy trabajando en ello. No he estado allí el tiempo suficiente, así que dame un tiempo. Muy bien.

Entonces hablemos de la consistencia y flexibilidad cuando se trata de bibliotecas de componentes. Lo que sucede con las bibliotecas de componentes es que no hay una única respuesta verdadera, y realmente depende de un montón de contexto. Así que cuando empecé, comencé a mirar otras bibliotecas de componentes, eso es lo suficientemente grande. Miré Polaris, que es el sistema de diseño de Shopify, y miré Material UI, que es una biblioteca de componentes de código abierto, y este es un componente que ambos tienen, como Así que con Polaris, cómo creas este banner es diciendo que quieres un banner. El estado de este banner es crítico. Y aquí está el título. Y se renderiza todo eso. El icono está ahí. El botón de cruz está ahí. Todo eso está ahí. Y si quieres agregar una acción, dices objeto de acción donde dices que este es el contenido, y si se hace clic en esto, esta es la función que debes llamar. Muy, muy descriptivo. Hay mucha configuración aquí. Si tengo que construir lo mismo con Material UI, se vería algo así. Tengo una alerta. No lo llaman banner, lo llaman alerta. No importa. Y le das una gravedad de error. Y luego puedes pasarle un icono. Puede ser cualquier icono. No tiene que ser este icono. Básicamente puedes dar cualquier icono.

2. Flexibilidad en las Bibliotecas de Componentes

Short description:

Material UI y Polaris tienen diferentes niveles de flexibilidad en sus APIs de componentes. Polaris es altamente opinativo con una API estricta, lo que lleva a resultados consistentes. Material UI, como una biblioteca de código abierto, ofrece una API altamente flexible que depende de la empresa y el contexto. Al considerar una biblioteca de componentes, factores como el tipo de producto, la centralización de decisiones de diseño y la madurez de los patrones determinan el nivel adecuado de flexibilidad.

Es muy flexible. Y también te permite sobrescribir parte del CSS. De hecho, puedo cambiar el color del borde aquí, como lo he hecho. Y finalmente... Ay. Bien. Finalmente, si quiero agregar contenido dentro de él, hay un título de alerta. Pero si quiero un botón, puedo traer mi propio botón y ponerlo allí. Y luego soy responsable de este margen que ves aquí. Bien.

Entonces, si comparas estas dos APIs de componentes, están creando el mismo componente, pero hay mucha diferencia en cómo se ve la API y cuánta flexibilidad tienes. Y eso me lleva al espectro de flexibilidad. Entonces, cuando pienso en Shopify como Polaris, creo que Polaris está en algún lugar aquí, donde es muy opinativo, tiene una API extremadamente estricta y eso lleva a estos resultados predecibles, consistentes. Puedes usar la alerta donde quieras y obtendrás algo similar. Pero, por supuesto, puede volverse un poco rígido y restrictivo si estás experimentando con él. Por otro lado, Material UI está probablemente aquí. Es de código abierto, por lo que no hay suposición de contexto. Tiene que tener una API muy flexible, porque el equipo de Material no puede adivinar realmente para qué lo usarás. Lo que significa que depende de tu empresa, tu contexto. Y si no tienes cuidado, si usas Material UI como tu sistema de diseño, puede volverse desordenado o fragmentado o simplemente necesitas muchas barreras de protección en su lugar.

Entonces, cuando estaba mirando Primer React, pensé, bueno, ¿dónde nos ubicamos? ¿O si estás pensando en ello para tu biblioteca de componentes? La respuesta, por supuesto, siempre es depende. Y también depende de estos factores. ¿Está construido para un producto específico o es de código abierto? ¿La decisión de diseño está centralizada porque tienes un cierto equipo de diseño o los productos individuales tienen su propio equipo de diseño? ¿Está disperso? ¿Cuánto tiempo tiene el producto? ¿Qué tan maduros están los patrones? Si ya tienes patrones establecidos, es más fácil ser más consistente, en comparación con Si aún estás encontrando los patrones, es mejor ser más flexible. Y miré esto y pensé, construimos para un producto específico. Tenemos un equipo de diseño centralizado. Hemos establecido patrones. Entonces GitHub es muy antiguo. Entonces probablemente aquí, así es cuánta flexibilidad probablemente deberíamos permitir. Para mostrar esto, miré este componente. Este es un patrón común que has visto en muchos lugares.

QnA

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.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
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.
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
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.
Construyendo Bibliotecas de Componentes Multiplataforma para Web y Nativo con React
React Advanced 2021React Advanced 2021
21 min
Construyendo Bibliotecas de Componentes Multiplataforma para Web y Nativo con React
Top Content
This Talk discusses building cross-platform component libraries for React and React Native, based on a successful project with a large government-owned news organization. It covers the requirements for React Native knowledge, building cross-platform components, platform-specific components, styling, and the tools used. The Talk also highlights the challenges of implementing responsive design in React Native.
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.

Workshops on related topic

Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
React Summit 2023React Summit 2023
137 min
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
Top Content
WorkshopFree
Sam Sycamore
Siriwat (Jun) Kunaporn
2 authors
Aprende cómo utilizar el ecosistema completo de MUI para construir un tablero de gestión de proyectos hermoso y sofisticado en una fracción del tiempo que tomaría construirlo desde cero. En particular, veremos cómo integrar la Rejilla de Datos de MUI X con Joy UI, nuestra biblioteca de componentes más nueva y hermana del estándar de la industria Material UI.
Tabla de contenidos:- Presentando nuestro proyecto y herramientas- Configuración de la aplicación e instalación del paquete- Construcción del tablero- Prototipado, estilos y temas - Características de Joy UI- Filtrado, ordenación, edición - Características de la Rejilla de Datos- Conclusión, pensamientos finales, P&R
Aprende a utilizar Composables: La navaja suiza de los desarrolladores de Vue
Vue.js Live 2024Vue.js Live 2024
163 min
Aprende a utilizar Composables: La navaja suiza de los desarrolladores de Vue
Workshop
Juan Andrés Núñez Charro
Juan Andrés Núñez Charro
Los Composables (funciones de composición) son funciones con estado/sin estado que pueden aprovechar la API de reactividad de Vue, desacoplándola de los componentes.Este cambio de perspectiva abre la posibilidad de abordar escenarios comunes de una manera nueva y creativa. En este masterclass, aprenderás cómo resolver problemas típicos que enfrenta cada desarrollador de Vue, utilizando composables:
- Almacenamiento de datos;- Comunicación entre componentes;- Funciones de utilidad (DOM, API, etc);Y más.
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