Stimulus — это легковесный JavaScript-фреймворк, ориентированный на управление поведением HTML-элементов с минимальными усилиями. Для его использования в современных проектах предпочтительно применять менеджеры пакетов, такие как npm или yarn, что обеспечивает удобство интеграции и управление зависимостями.
Для установки Stimulus через npm необходимо выполнить команду:
npm install @hotwired/stimulus
После успешной установки в проекте появится папка
node_modules/@hotwired/stimulus, а также запись о
зависимости в package.json:
"dependencies": {
"@hotwired/stimulus": "^3.3.0"
}
Stimulus готов к импорту в модульном JavaScript-коде:
import { Application } from "@hotwired/stimulus";
Создание экземпляра приложения выполняется следующим образом:
const application = Application.start();
На этом этапе приложение Stimulus готово к подключению контроллеров.
Для установки через yarn используется аналогичная команда:
yarn add @hotwired/stimulus
Эта команда добавляет Stimulus в зависимости проекта и обеспечивает
синхронизацию с yarn.lock. Импорт и инициализация идентичны
npm-версии:
import { Application } from "@hotwired/stimulus";
const application = Application.start();
После установки Stimulus структура проекта обычно включает:
project/
├─ node_modules/
│ └─ @hotwired/stimulus/
├─ src/
│ ├─ controllers/
│ └─ index.js
├─ package.json
└─ yarn.lock / package-lock.json
После старта приложения можно регистрировать контроллеры.
Предположим, есть контроллер hello_controller.js:
// src/controllers/hello_controller.js
import { Controller } from "@hotwired/stimulus";
export default class extends Controller {
static targets = ["name"];
greet() {
console.log(`Hello, ${this.nameTarget.value}!`);
}
}
Регистрация контроллера в основном файле:
import { Application } from "@hotwired/stimulus";
import HelloController from "./controllers/hello_controller";
const application = Application.start();
application.register("hello", HelloController);
В HTML:
<div data-controller="hello">
<input data-hello-target="name" type="text" value="Stimulus">
<button data-action="click->hello#greet">Greet</button>
</div>
Для упрощения разработки можно использовать динамическую загрузку всех контроллеров:
import { Application } from "@hotwired/stimulus";
const application = Application.start();
const context = require.context("./controllers", true, /\.js$/);
context.keys().forEach((filename) => {
const controller = context(filename).default;
const name = filename.replace(/^.\//, "").replace(/_controller\.js$/, "");
application.register(name, controller);
});
Этот подход позволяет добавлять новые контроллеры без ручной регистрации.
npm update @hotwired/stimulus или
yarn upgrade @hotwired/stimulus для обновления.package.json с помощью точных
или диапазонных номеров (^, ~) для
стабильности проекта.