window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() StimulusReflex - una forma rápida de crear aplicaciones reactivas - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2021-06-22
Desarrollo de software

StimulusReflex: una forma rápida de crear aplicaciones reactivas

The Codest

Pawel Muszynski

Software Engineer

¿Qué es StimulusReflex? Bastante popular hoy en día el enfoque HTML over-the-wire nos llevó a la creación de frameworks y librerías que envían HTML a través del cable en lugar de utilizar JSON. StimulusReflex es uno de ellos.

Es una nueva forma de crear una interfaz de usuario reactiva en Ruby on Rails.
StimulusReflex amplía las capacidades de Rails y Stimulus capturando las interacciones del usuario y pasándolas a Rails a través de websockets en tiempo real. Las páginas se vuelven a renderizar rápidamente y todas las actualizaciones se envían al cliente a través de CableReady.

CableReady permite crear actualizaciones en tiempo real activando cambios en el DOM del lado del cliente, eventos y notificaciones a través de ActionCable. A diferencia de Ajax, las operaciones no siempre son iniciadas por el usuario otro navegador, por ejemplo, también pueden ser iniciadas por los trabajadores.

EstímuloReflejo se inspiró originalmente en LiveView de Phoenix (una alternativa a SPA). El objetivo de StimulusReflex siempre ha sido hacer que la construcción de aplicaciones modernas con Rails sea la opción más productiva y agradable disponible. Y en mi opinión, esto es exactamente lo que han conseguido aquí.

¿Por qué utilizar StimulusReflex?

Es sencillo, centrarse en desarrollar una producto en lugar de introducir cambios coherentes en JavaScript. También, EstímuloReflejo aplicaciones sean sencillas, concisas y claras código e integrarse perfectamente con Ruby on Rails. Esto permite a pequeños equipos de RoR hacer grandes cosas incluso sin grandes conocimientos de React, Vue o sus modernas soluciones JavaScript.

¿Cómo funciona StimulusReflex?

Reflejo

Reflejo es una actualización transaccional de la interfaz de usuario que tiene lugar a través de una conexión abierta persistente con el servidor. StimulusReflex asigna solicitudes a Reflejo clase. Reflejo clases están en el app/reflejos directorio.

 class PostReflex < ApplicationReflex
 fin


Si creamos la clase Reflex con un generador, podemos ver que nuestra clase contiene este comentario:

# Todas las instancias de Reflex incluyen CableReady::Broadcaster y exponen las siguientes propiedades:
  #
  # - connection - la conexión de ActionCable,
  # - channel - el canal de ActionCable,
  # - request - un proxy ActionDispatch::Request para la conexión socket,
  # - session - el almacén ActionDispatch::Session para el visitante actual,
  # - flash - el ActionDispatch::Flash::FlashHash para la solicitud actual,
  # - url - la URL de la página que desencadenó el reflejo,
  # - params - parámetros del formulario más cercano del elemento (si existe),
  # - element - un objeto tipo Hash que representa el elemento HTML que desencadenó el reflejo,
  # - signed - utiliza un ID global firmado para asignar el conjunto de datos atribuido a un modelo, por ejemplo, element.signed[:foo],
  # - unsigned - utiliza un ID global sin signo para asignar el conjunto de datos atribuido a un modelo, por ejemplo, element.unsigned[:foo],
  # - cable_ready - un cable_ready especial que puede emitir al visitante actual (no necesita paréntesis),
  # - reflex_id - un UUIDv4 que identifica unívocamente cada Reflex.

Como vemos, son pocas las propiedades que podemos utilizar en nuestra clase. La más interesante al principio será la elemento que contiene todos los atributos del elemento DOM del controlador Stimulus, así como otras propiedades, como tagName, comprobado y valor.

EstímuloReflejo también nos proporciona un conjunto de callbacks que nos permiten controlar los procesos de nuestro reflejo:

  • antes_del_reflejo
  • alrededor_del_reflejo
  • after_reflex

Como puede ver, la nomenclatura es muy similar a la de las retrollamadas de Active Record.

Declarar un reflejo en HTML con el atributo data

La forma más rápida de activar las acciones Reflex es utilizando la función datos-reflex atributo. La sintaxis sigue el formato Estímulo: [DOM-event]->[ReflexClass]#[action]

"="">Documentación de StimulusReflex. ¡Un saludo a todas las personas involucradas en el desarrollo de StimulusReflex!

En este ejemplo, el datos-reflex señaló el atributo PostRefex y la clase incrementar en el haga clic en evento. Aquí también pasamos data-post-id que más tarde podremos utilizar en la clase Reflex a través de element.dataset[:post_id].

clase PostsReflex < ApplicationReflex
def incremento
post = Post.find(element.dataset[:post_id])

¡post.increment! :likes
end
end

Morphs

Por defecto, EstímuloReflejo actualiza toda la página (Page morph). Después de reprocesar la acción del controlador, renderizar la plantilla de vista y enviar el HTML sin procesar al navegador, StimulusReflex utiliza la función morphdom para realizar el menor número de modificaciones del DOM necesarias para actualizar la interfaz de usuario en unos pocos milisegundos.

EstímuloReflejo presenta tres modos de funcionamiento distintos:

Morph de página - realiza una actualización a toda página,
Selector Morph - sustituye el contenido de un elemento,
Nada Morph - ejecuta funciones que no actualizan su página (por ejemplo, llamar a su empleado).

Para cambiar nuestro PostReflex1TP65Incremento podemos utilizar simplemente el método morph y apuntar al parcial que queremos actualizar.

def incremento
post = Post.find(element.dataset[:post_id])
¡post.increment! :likes

morph "#posts_#{post.id}", render(partial: 'post', locals: { posts: post })
fin

Lo que pienso

Esta breve introducción es suficiente para comenzar tu viaje con Rails reactivo utilizando EstímuloReflejo. ¿No es genial poder crear una aplicación SPA reactiva con sólo unas pocas líneas de Ruby y sin JavaScript? Para mí, toda esta idea de HTML over-the-wire es emocionante, y definitivamente voy a profundizar en este tema en el futuro. Por ahora, te recomiendo Documentación sobre StimulusReflex. Muchas gracias a todos los que han participado en el desarrollo de StimulusReflex.

Más información:

Por qué debería (probablemente) utilizar Typescript

¿Cómo no matar un proyecto con malas prácticas de codificación?

Estrategias de obtención de datos en NextJS

Artículos relacionados

Desarrollo de software

Crear aplicaciones web preparadas para el futuro: ideas del equipo de expertos de The Codest

Descubra cómo The Codest destaca en la creación de aplicaciones web escalables e interactivas con tecnologías de vanguardia, ofreciendo experiencias de usuario fluidas en todas las plataformas. Descubra cómo nuestra experiencia impulsa la transformación...

EL MEJOR
Desarrollo de software

Las 10 mejores empresas de desarrollo de software de Letonia

Conozca las principales empresas de desarrollo de software de Letonia y sus innovadoras soluciones en nuestro último artículo. Descubra cómo estos líderes tecnológicos pueden ayudarle a mejorar su negocio.

thecodest
Soluciones para empresas y escalas

Fundamentos del desarrollo de software Java: Guía para externalizar con éxito

Explore esta guía esencial sobre el desarrollo de software Java outsourcing con éxito para mejorar la eficiencia, acceder a la experiencia e impulsar el éxito de los proyectos con The Codest.

thecodest
Desarrollo de software

La guía definitiva para subcontratar en Polonia

El auge de las outsourcing en Polonia está impulsado por los avances económicos, educativos y tecnológicos, que fomentan el crecimiento de las TI y un clima favorable a las empresas.

TheCodest
Soluciones para empresas y escalas

Guía completa de herramientas y técnicas de auditoría informática

Las auditorías informáticas garantizan sistemas seguros, eficientes y conformes. Obtenga más información sobre su importancia leyendo el artículo completo.

The Codest
Jakub Jakubowicz CTO y Cofundador

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish