Stimulus — это JavaScript-фреймворк для управления поведением элементов на странице, построенный вокруг концепции контроллеров. Контроллеры привязываются к HTML через data-атрибуты, что упрощает структуру кода и делает её декларативной.
Для использования Stimulus необходимо подключение библиотеки через npm или CDN. При использовании npm структура проекта обычно включает:
index.html — основная HTML-страница.controllers/ — папка с файлами контроллеров.application.js — основной файл, где инициализируется
Stimulus.Пример инициализации:
import { Application } from "@hotwired/stimulus"
import HelloController from "./controllers/hello_controller"
const application = Application.start()
application.register("hello", HelloController)
Контроллер связывается с HTML-элементом с помощью
data-controller="hello".
Контроллер Stimulus представляет собой класс, наследующий
Controller. Основные жизненные циклы и методы:
connect() — вызывается при привязке контроллера к
DOM.disconnect() — вызывается при удалении элемента из
DOM.initialize() — вызывается один раз при создании
экземпляра, до подключения к DOM.Пример контроллера:
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = ["output"]
initialize() {
console.log("Контроллер инициализирован")
}
connect() {
console.log("Контроллер подключен к элементу")
}
greet() {
this.outputTarget.textContent = "Привет, Stimulus!"
}
}
targets позволяют удобно работать с дочерними элементами
через this.outputTarget.
Stimulus использует концепцию actions, которые
связывают события DOM с методами контроллера. Синтаксис:
data-action="event->controller#method".
Пример:
<button data-action="click->hello#greet">Сказать привет</button>
<p data-hello-target="output"></p>
Здесь клик по кнопке вызывает метод greet контроллера
hello.
Для эффективной работы со Stimulus важно уметь отлаживать контроллеры и действия:
Stimulus.Application.start()
console.log(application.controllers)
Позволяет увидеть, какие контроллеры зарегистрированы и активны на странице.
const controller = application.getControllerForElementAndIdentifier(
document.querySelector("[data-controller='hello']"),
"hello"
)
console.log(controller.outputTarget)
Это помогает проверить правильность привязки
targets.
В DevTools (Chrome, Firefox) можно:
connect
или любом другом методе контроллера.Stimulus активно использует data-атрибуты, поэтому инспектор элементов в DevTools становится ключевым инструментом:
data-controller,
data-target, data-action.controller.greet()
Это позволяет тестировать поведение без повторного взаимодействия с интерфейсом.
Эффективная отладка особенно важна при работе с большим количеством контроллеров на одной странице, где возможны конфликты targets и actions.
console.table(this.targets) для наглядного отображения всех
targets.Stimulus позволяет создавать динамичные интерфейсы без сложных фреймворков, но успешная работа требует системного подхода к отладке. Инструменты браузера, консоль, инспектор DOM и breakpoints — основные способы анализа работы контроллеров и взаимодействий с элементами страницы.