Stimulus, новый фреймворк JavaScript, который вращается только вокруг трех основных концепций: контроллеры, действия и цели, был недавно открыт Basecamp и теперь достиг версии 1.0.
Первоначально Stimulus был разработан техническим директором Basecamp и создателем Ruby on Rails Дэвидом Хайнемайером Ханссоном. Он описывается как JavaScript-фреймворк со скромными амбициями. Он не пытается захватить весь ваш интерфейс и вообще не занимается рендерингом HTML. Цель состоит в том, чтобы дополнить ваш HTML поведением, достаточным для того, чтобы он сиял.
Stimulus работает, постоянно отслеживая страницу, ожидая появления определенного атрибута. Атрибут data-controller используется для подключения и отключения контроллеров Stimulus. В основе Stimulus лежит его способность автоматически подключать элементы DOM к объектам JavaScript. Эти объекты называются контроллерами в Stimulus.
Разработчики Stimulus говорят, что точно так же, как этот класс является мостом, соединяющим HTML и CSS, data-controller является мостом между HTML и JavaScript. Второй атрибут, атрибут data-action, описывает, как события на странице должны запускать методы контроллера, а атрибут data-target дает вам дескриптор для поиска элементов в области действия контроллера.
Stimulus основан на другой библиотеке Basecamp под названием Turbolinks. Это разработка, в которой используется подход под названием pjax, разработанный на GitHub. Разработчики из Basecamp говорят, что полностраничное обновление может показаться медленным, не потому, что браузер должен обрабатывать HTML, отправленный с сервера, и не в том, что полезная нагрузка HTML имеет тенденцию быть больше, чем полезная нагрузка JSON, потому что браузеры справляются с этим хорошо. . Причина задержки заключается в том, что CSS и JavaScript должны быть повторно инициализированы и повторно применены к странице, даже если сами файлы кэшированы.
Чтобы обойти эту повторную инициализацию, Turbolinks поддерживает постоянный процесс, как это делают одностраничные приложения. Этот процесс в основном невидимый, он перехватывает ссылки и загружает новые страницы через Ajax.
Этот подход отличается от большинства современных фреймворков JavaScript, где JSON превращается в элементы DOM с помощью языка шаблонов. Он также отличается способом обработки состояния. В то время как большинство фреймворков поддерживают состояние в объектах JavaScript, а затем отображают HTML на основе этого состояния, Stimulus сохраняет состояние в HTML, так что контроллеры могут быть отброшены между изменениями страницы, но все же повторно инициализируются, как они были, когда кешированный HTML появляется снова.
Разработчики говорят, что этот подход предлагает действенную альтернативу общепринятому пониманию того, как выглядит «современное» веб-приложение, а также может использоваться в сочетании с другими, более тяжелыми подходами. Stimulus доступен по лицензии MIT с открытым исходным кодом и доступен на GitHub.