Construyendo aplicaciones web con señales en Grammarly

Rate this content
Bookmark

Las señales se han convertido recientemente en un concepto popular. Sus ideas se basan en el enfoque de programación funcional reactiva (FRP), que se ha utilizado en la industria durante un tiempo. Me gustaría compartir cómo alguien puede construir una arquitectura basada en señales y React, y cómo hemos utilizado FRP en Grammarly durante bastante tiempo. La charla tiene como objetivo mostrar los principios fundamentales de los observables y cómo estructurar aplicaciones basadas en ideas de FRP.

This talk has been presented at React Day Berlin 2024, check out the latest edition of this React Conference.

Oleksii Levzhynskyi
Oleksii Levzhynskyi
29 min
13 Dec, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hola, bienvenidos todos. Hoy voy a hablar sobre la construcción de aplicaciones web con señales en Grammarly. Las señales son como valores que pueden cambiar con el tiempo y se utilizan en el editor de Grammarly para actualizaciones en tiempo real. Las señales se pueden implementar con React y se aprovechan para la gestión del estado y la lógica empresarial. Permiten la programación funcional reactiva y declarativa, lo que permite definir acciones específicas. Las señales se pueden probar utilizando pruebas unitarias clásicas o pruebas de mármol. Las señales son perfectas para el dominio de Grammarly y se pueden integrar fácilmente con varias bibliotecas y frameworks. La limpieza y la cancelación de la suscripción a las señales se pueden realizar a través del método dispose y el ciclo de vida de React. Los principales desafíos en los sistemas impulsados por señales son las pruebas y la depuración de los flujos. Las pruebas de mármol proporcionan control sobre la emisión de señales y los estados combinados se pueden calcular utilizando la función de vista. Grammarly está considerando migrar a la propuesta de señales en el futuro. ¡Gracias, Alexey!

1. Introducción a las Señales en Grammarly

Short description:

Hola, bienvenidos a todos. Hoy voy a hablar sobre la construcción de aplicaciones web con señales en Grammarly. Me uní a Grammarly hace muchos años y ahora trabajo con clientes de Grammarly, principalmente web. También mantengo nuestra biblioteca de código abierto de Grammarly para la gestión de estado reactivo. En Grammarly, usamos señales para construir nuestras aplicaciones, y animo a todos a considerar el uso de enfoques similares. Grammarly es un asistente de escritura que proporciona refinamientos y sugerencias. Tenemos un editor de Grammarly con varias características, incluidas estadísticas, edición en múltiples dispositivos y verificaciones de Grammarly. Estas características se actualizan y recalculan en tiempo real a medida que el texto cambia.

Hola, bienvenidos a todos. Mi nombre es Lesh Levzhinsky, y hoy voy a hablar sobre la construcción de aplicaciones web con señales en Grammarly. Ya fui presentado, pero de todos modos, me uní a Grammarly hace muchos años. Me uní como desarrollador web, y ahora estoy trabajando con un par de clientes de Grammarly, principalmente web. Además, soy mantenedor de nuestra biblioteca de código abierto de Grammarly que trata sobre la gestión de estado reactivo. Es Grammarly para Kal, y también soy miembro de la conferencia FW Days. Es la conferencia más grande sobre JavaScript en Ucrania.

Bueno, sobre mi charla. Hoy, me gustaría compartir nuestra experiencia en Grammarly, cómo estamos usando señales para construir nuestras aplicaciones, así como me gustaría tal vez animar a todos a pensar sobre el uso de enfoques similares, si aún no lo hacen.

Bueno, y antes de profundizar en los detalles, tengo un par de preguntas. Lo siento, tengo un par de preguntas. En primer lugar, ¿alguna vez has usado señales? ¿Podrías levantar la mano? Oh, bien. ¿Qué hay de FRP, programación reactiva funcional? ¿Tal vez algo? Oh, va a ser una charla fácil. Bien. Pero de todos modos, no voy a empezar con la definición técnica.

Me gustaría comenzar con el caso de uso. Grammarly es un asistente de escritura. En Grammarly, el usuario puede escribir un texto y proporcionaremos un refinamiento para este texto. Proporcionaremos sugerencias para que puedas seguir adelante, actualizarlo, reformularlo, etcétera. En esta diapositiva, hay un par de errores tipográficos, y las líneas rojas son algo de Grammarly. Bueno, también tenemos un editor de Grammarly. Es como un editor típico donde los usuarios pueden seguir adelante y crear documentos, así como obtener todo el poder de Grammarly para refinar, hacer una revisión de su texto. Bueno, en este editor, tenemos un par de características. En primer lugar, sí, tal vez no en primer lugar, pero también pasar a la función principal como escribir texto. Nos gustaría mostrar algunas estadísticas. Además, definitivamente necesitamos enviarlo a algún lugar al backend para almacenamiento permanente. Nos gustaría que nuestros usuarios pudieran editarlo desde diferentes dispositivos, tal vez. Y por supuesto, necesitamos proporcionar una verificación de Grammarly, por lo que necesitamos enviar este texto a tal vez otro servicio. Así como podría haber múltiples características diferentes que necesitan ser actualizadas, recalculadas tan pronto como el texto cambie.

2. Understanding Signals and Their Usage

Short description:

Las señales son como valores que pueden cambiar con el tiempo. Son un concepto de reactividad y se pueden usar para actualizar la interfaz de usuario o ejecutar lógica de negocio. Muchas bibliotecas y frameworks, incluidos Angular y ArigGS, incorporan señales. Grammarly tiene su propia biblioteca llamada GrammarlyFocal. Las señales se aprovechan en el editor de Grammarly, y podemos implementarlas con React.

Bueno, suena bastante para solo una pulsación de tecla. Y aquí las señales pueden ser útiles. Entonces, en este caso, ¿qué podría ser una señal? La señal podría ser en realidad texto. Es como un valor, valores estáticos, con los que podemos trabajar en cualquier momento, así como el hecho de que cambia con el tiempo. Y tal vez un poco de lo que se trata.

Es un diagrama clásico. Nada especial aquí. En el lado izquierdo, solo tenemos un valor. Bien, podemos, cuál es el valor, podemos acceder a él en cualquier momento de manera sincrónica. En el lado opuesto, tenemos una especie de observable, solo un flujo de eventos, como sin el tipo de valor estático, sino más bien necesitas escucharlo. Y la señal es algo intermedio, ante todo. Usualmente, aquí es como un cubo. Hay un valor al que puedes acceder en cualquier momento, así como puedes suscribirte a él, por lo que se comporta de ambas maneras.

Bueno, esta es otra presentación. Entonces, las señales en general, es un concepto de reactividad. No voy a profundizar en la reactividad, pero, sí, en general, necesitamos reaccionar ante algún cambio en el estado y actualizar de manera reactiva nuestra interfaz de usuario, o tal vez ejecutar alguna lógica de negocio. Bueno, aquí está solo la parte observable de nuestra señal, como si estuviéramos aplicando al flujo de eventos, estamos aplicando la función de enlaces en este caso, y obteniendo otro flujo. Bueno, ¿qué hay del uso? Hay bastantes bibliotecas, frameworks que contienen este concepto de señales. Seguro, hay señales en Angular, así como Angular usa ArigGS.

Probablemente, el término señal se hizo popular después de que solid.js lo introdujera. Y seguro, hay una biblioteca independiente, ArigGS. No se trata solo de las señales, sino que hay un concepto llamado sujetos de comportamiento que pueden contener el valor que se puede acceder de manera sincrónica. Hay una propuesta estándar, seguro. En Grammarly, tenemos nuestra propia biblioteca que fue desarrollada hace bastante tiempo. Proporciona un código llamado GrammarlyFocal, y también básicamente proporciona o comparte el mismo concepto de señales, y hay muchos más ejemplos.

Bueno, suficiente con la especie de introducción. Veamos cómo estamos aprovechando la idea de señales en nuestro editor de Grammarly. Es como la misma pantalla, nada especial. No voy a profundizar en los detalles, pero veamos cómo podría ser, en teoría, implementado con React. Esto es muy simple, solo para el propósito de la demostración.

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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Entendiendo la Arquitectura Fiber de React
React Advanced 2022React Advanced 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
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.
Patrones de Arquitectura Remix
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Patrones de Arquitectura Remix
Top Content
This Talk introduces the Remix architecture patterns for web applications, with over 50% of participants using Remix professionally. The migration from single page applications to Remix involves step-by-step refactoring and offers flexibility in deployment options. Scalability can be achieved by distributing the database layer and implementing application caching. The backend for frontend pattern simplifies data fetching, and Remix provides real-time capabilities for collaborative features through WebSocket servers and Server-SendEvents.

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.