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 }) }, } } })() Stimulus.js: Una alternativa de framework JS para aplicaciones Rails - 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
2020-05-13
Desarrollo de software

Stimulus.js: Una alternativa de framework JS para aplicaciones Rails

The Codest

Pawel Muszynski

Software Engineer

Como dicen sus creadores, Stimulus es un framework JavaScript con ambiciones modestas, que no pretende apoderarse de todo tu frontend, sino aumentar el HTML con el comportamiento justo para hacerlo brillar.

Sé lo que estás pensando... Otro JavaScript marco? Ya hay tantos. Tienes razón, pero éste me llamó la atención porque fue creado por Campamento base. Probablemente conozcas esta empresa, son los creadores de Ruby on Rails. También crearon Turbolinks, y lo menciono porque Stimulus combina de maravilla con él. Así que, ¿tal vez merezca la pena probar Stimulus?

¿Cómo funciona?

El estímulo funciona monitorizando la página, esperando a que el controlador de datos para que aparezca. La dirección controlador de datos conecta y desconecta los controladores de Stimulus. La premisa es simple: al igual que la clase es una conexión entre HTML y CSS, controlador de datos es un puente entre HTML y JavaScript. Stimulus también añade el datos-acción que describe cómo los eventos de la página deben activar los métodos del controlador, y el atributo datos-objetivo que permite encontrar elementos en el ámbito del controlador.

Fácil instalación

Si tu aplicación Rails utiliza una gema webpacker, puedes instalar Stimulus con un simple comando, ya que la gema webpacker proporciona una tarea para instalar Stimulus. Sólo tienes que ejecutar el siguiente comando en el directorio raíz de Rails:

rails webpacker:install:stimulus
Esto añade estímulo a paquete.json y crea los dos archivos siguientes: app/javascript/controllers/index.js:

import { Aplicación } de "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"

const aplicación = Aplicación.start()
const context = require.context("controllers", true, /_controller.js$/)
application.load(definicionesDeContexto(contexto))

Puedes ver que se llama al ayudante require.context de webpack. Luego pasa el contexto resultante al método Application#load. Esto significa que nuestra aplicación está buscando archivos llamados[identificador]_controlador.js en el app/javascript/controllers/ donde el identificador se corresponde con el identificador del controlador de datos en su HTML. Este es exactamente el lugar donde debemos poner los controladores Stimulus.
La aplicación/javascript/controllers/hello_controller.js también se genera. Esto es sólo un controlador de ejemplo con el que podemos jugar.

Uso básico

Ok, así que tenemos el hello_controller.js creado con lo siguiente código:

import { Controller } from "stimulus"

export default class extends Controller {
static targets = ["salida"]
connect() {
this.outputTarget.textContent = '¡Hola, Stimulus!'
}
}

Pero, como sabes, no veremos ningún efecto si no hacemos la conexión entre HTML y JavaScript. Vamos a añadir algo de código a tu vista HTML. Puedes poner esto cuando quieras:

<div data-controller="hello">
<p data-target="hello.output">&nbsp;</p>
</div>

¿Y sabes qué? Eso es todo. Si recargas tu página y ves "¡Hola, Estímulo!" en tu página, significa que la conexión funciona correctamente. Sencillo, ¿verdad?
Ok, pero esto es sólo una visualización de texto plano. ¿Podemos tener algo de acción? Pues sí. Como he mencionado antes, también existe la función datos-acción atributo. Cambiemos entonces nuestra vista HTML:

<div data-controller="hello">
<p><input type="number" data-target="hello.days"><br><button data-action="click->hello#calculate">Calcule</button></p>
</div>

Y el controlador de estímulo app/javascript/controllers/hello_controller.js:

import { Controller } from "stimulus"

export default class extends Controller {
static targets = ["salida", "días"]
connect() {
this.outputTarget.textContent = '¿Cuánto tiempo has estado en cuarentena?'
}
calculate() {
const elemento = this.daysTarget
const días = element.valor
const lockdownDays = 14
let daysLeft = días de cierre - días

if (daysLeft < 1) {
  alert('¡Eres libre!')
}
else {
  alert(`Cantidad de días que debe permanecer en cuarentena: ${daysLeft}`)
}

}
}

Aquí tenemos una aplicación muy sencilla que calcula cuánto tiempo debemos permanecer en cuarentena. Lo conseguimos utilizando el atributo data-action en HTML.
Puede ver que también hemos añadido "días" a la lista de objetivos en el código JavaScript. Cuando hacemos esto, Stimulus crea automáticamente un this.daysTarget que devuelve el primer elemento de destino coincidente.

¿Qué más necesita saber?

Devoluciones de llamada

Probablemente se habrá dado cuenta de que hay un conectar() en ambos ejemplos. Este es para los callbacks incorporados. Usted debe saber todos ellos y su ciclo de vida, así que aquí están:
inicializaruna vez, cuando el controlador se instancie por primera vez,
conecte: siempre que el controlador esté conectado al DOM,
desconectar: cada vez que el controlador se desconecta del DOM.

Descriptor de la acción

En datos-acción valor clic->hello#calcular se llama descriptor de acción. Este descriptor dice que:

  • haga clic en es el nombre del evento,
  • hola es el identificador del controlador,
  • calcular es el nombre del método.

Objetivos

Al igual que para las acciones, Estímulo tiene un descriptor de objetivo. La dirección hola.días descriptor dice que: hola es el identificador del controlador,
días es el nombre del objetivo.

En el ejemplo anterior, mencioné que Estímulo crea el this.daysTarget cuando hay "días" en la lista de objetivos. También debe saber que se pueden crear más propiedades. En relación con el ejemplo, usted puede tener:

this.daysTarget que evalúa hasta el primer objetivo en el ámbito del controlador. Si no hay ningún objetivo, la propiedad indica un error,
this.daysTargets evalúa hasta un array de todos los objetivos fuente en el ámbito del controlador,
this.hasDaysTarget devuelve true si hay un objetivo o false en caso contrario.

Como puedes ver, Stimulus es sencillo y puede añadirse fácilmente a tu aplicación. Está ganando cierta popularidad en la comunidad RoR y no me sorprende. Como desarrollador de Ruby, me gusta mucho trabajar con Stimulus. ¿Qué te parece si lo pruebas?

Más información:

  • Desarrollo de aplicaciones web: ¿Por qué merece la pena elegir la tecnología Ruby on Rails?
  • Ha llegado la hora de una nueva realidad. Hace un mes comenzó la era del trabajo a distancia
  • 5 razones por las que encontrarás desarrolladores Ruby cualificados en Polonia

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