window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster już istnieje') } 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: Alternatywa frameworka JS dla aplikacji Rails - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2020-05-13
Software Development

Stimulus.js: Alternatywa frameworka JS dla aplikacji Railsowych

The Codest

Paweł Muszyński

Software Engineer

Jak mówią jego twórcy, Stimulus to framework JavaScript o skromnych ambicjach, który nie stara się przejąć całego frontendu, ale rozszerzyć HTML o wystarczającą ilość zachowań, aby nadać mu blasku.

Wiem, co sobie myślisz... Kolejny JavaScript framework? Jest ich już tak wiele! Masz rację, ale ten przykuł moją uwagę, ponieważ został stworzony przez Basecamp. Prawdopodobnie znasz tę firmę, są twórcami Ruby on Rails. Stworzyli również Turbolinks, i wspominam o tym, ponieważ Stimulus pięknie się z nim łączy. Może więc warto wypróbować Stimulus?

Jak to działa?

Stimulus działa poprzez monitorowanie strony, czekając na kontroler danych atrybut do wyświetlenia. Atrybut kontroler danych łączy i rozłącza kontrolery Stimulus. Założenie jest proste: tak jak klasa jest połączeniem między HTML i CSS, kontroler danych jest pomostem z HTML do JavaScript. Stimulus dodaje również data-action atrybut, który opisuje, w jaki sposób zdarzenia na stronie powinny wyzwalać metody kontrolera, oraz data-target który daje uchwyt do wyszukiwania elementów w zakresie kontrolera.

Łatwa instalacja

Jeśli twoja aplikacja Rails korzysta z gemu webpacker, możesz zainstalować Stimulusa za pomocą jednego prostego polecenia, ponieważ gem webpacker zapewnia zadanie instalacji Stimulusa. Wystarczy uruchomić następujące polecenie w katalogu głównym Railsów:

rails webpacker:install:stimulus
To dodaje bodziec do package.json i tworzy następujące dwa pliki: app/javascript/controllers/index.js:

import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"

const application = Application.start()
const context = require.context("controllers", true, /_controller.js$/)
application.load(definitionsFromContext(context))

Widać, że wywoływany jest helper require.context webpacka. Następnie przekazał on wynikowy kontekst do metody Application#load. Oznacza to, że nasza aplikacja szuka plików o nazwie[identyfikator]_controller.js w app/javascript/controllers/ gdzie identyfikator odpowiada identyfikatorowi kontrolera danych w kodzie HTML. Jest to dokładnie to miejsce, w którym powinniśmy umieścić kontrolery Stimulus.
Aplikacja/javascript/controllers/hello_controller.js jest również generowany. To tylko przykładowy kontroler, którym możemy się pobawić.

Użycie podstawowe

Ok, więc mamy hello_controller.js plik utworzony z następującymi elementami kod:

import { Controller } from "stimulus"

export default class extends Controller {
static targets = ["output"]
connect() {
this.outputTarget.textContent = "Hello, Stimulus!
}
}

Ale, jak wiadomo, nie zobaczymy żadnych efektów, jeśli nie nawiążemy połączenia między HTML i JavaScript. Dodajmy trochę kodu do widoku HTML. Można go umieścić w dowolnym miejscu:

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

I wiesz co? To wszystko! Jeśli przeładujesz swoją stronę i zobaczysz na niej "Hello, Stimulus!", oznacza to, że połączenie działa poprawnie. Proste, prawda?
Ok, ale to tylko zwykłe wyświetlanie tekstu. Czy możemy mieć jakąś akcję? Tak, możemy! Jak wspomniałem wcześniej, istnieje również funkcja data-action atrybut. Następnie zmieńmy nasz widok HTML:

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

I kontroler bodźców app/javascript/controllers/hello_controller.js:

import { Controller } from "stimulus"

export default class extends Controller {
static targets = ["output", "days"]
connect() {
this.outputTarget.textContent = "Jak długo jesteś w kwarantannie?
}
calculate() {
const element = this.daysTarget
const days = element.value
const lockdownDays = 14
let daysLeft = lockdownDays - days

if (daysLeft < 1) {
  alert('Jesteś wolny!')
}
else {
  alert(`Ilość dni, które musisz pozostać na kwarantannie: ${daysLeft}`)
}

}
}

Tutaj mamy bardzo prostą aplikację, która oblicza, jak długo musimy pozostać w kwarantannie. Udało nam się to zrobić za pomocą atrybutu data-action w HTML.
Możesz zobaczyć, że dodaliśmy również "dni" do listy celów w kodzie JavaScript. Gdy to zrobimy, Stimulus automatycznie utworzy plik this.daysTarget która zwraca pierwszy pasujący element docelowy.

Co jeszcze musisz wiedzieć?

Wywołania zwrotne

Prawdopodobnie zauważyłeś, że istnieje connect() w obu przykładach. Ta dotyczy wbudowanych wywołań zwrotnych. Powinieneś znać je wszystkie i ich cykl życia, więc oto one:
inicjalizacja: raz, gdy kontroler jest tworzony po raz pierwszy,
połączenie: za każdym razem, gdy kontroler jest podłączony do DOM,
rozłączenie: za każdym razem, gdy kontroler jest odłączony od DOM.

Deskryptor działania

The data-action wartość kliknij->hello#calculate nazywany jest deskryptorem akcji. Deskryptor ten mówi, że:

  • kliknięcie jest nazwą zdarzenia,
  • cześć to identyfikator kontrolera,
  • obliczać jest nazwą metody.

Cele

Podobnie jak w przypadku akcji, Stimulus posiada deskryptor celu. The hello.days deskryptor mówi, że: cześć to identyfikator kontrolera,
dni jest nazwą celu.

W poprzednim przykładzie wspomniałem, że Stimulus tworzy this.daysTarget gdy na liście celów znajduje się "days". Należy również wiedzieć, że można utworzyć więcej właściwości. W odniesieniu do przykładu, można mieć:

this.daysTarget która ocenia do pierwszego celu w zakresie kontrolera. Jeśli nie ma celu, właściwość zgłasza błąd,
this.daysTargets ocenia do tablicy wszystkich celów źródłowych w zakresie kontrolera,
this.hasDaysTarget zwraca wartość true, jeśli istnieje cel lub false, jeśli nie.

Jak widać, Stimulus jest prosty i można go łatwo dodać do aplikacji. Zdobywa popularność w społeczności RoR i nie jestem zaskoczony. Jako programista Ruby naprawdę lubię pracować ze Stimulusem. A może by tak spróbować?

Czytaj więcej:

  • Tworzenie aplikacji internetowych: Dlaczego warto wybrać technologię Ruby on Rails?
  • Czas na nową rzeczywistość. Miesiąc temu rozpoczęła się era pracy zdalnej
  • 5 powodów, dla których w Polsce można znaleźć wykwalifikowanych programistów Ruby

Powiązane artykuły

Software Development

Tworzenie przyszłościowych aplikacji internetowych: spostrzeżenia zespołu ekspertów The Codest

Odkryj, w jaki sposób The Codest wyróżnia się w tworzeniu skalowalnych, interaktywnych aplikacji internetowych przy użyciu najnowocześniejszych technologii, zapewniając płynne doświadczenia użytkowników na wszystkich platformach. Dowiedz się, w jaki sposób nasza wiedza napędza transformację cyfrową i biznes...

THEECODEST
Software Development

10 najlepszych firm tworzących oprogramowanie na Łotwie

Dowiedz się więcej o najlepszych łotewskich firmach programistycznych i ich innowacyjnych rozwiązaniach w naszym najnowszym artykule. Odkryj, w jaki sposób ci liderzy technologiczni mogą pomóc w rozwoju Twojej firmy.

thecodest
Rozwiązania dla przedsiębiorstw i scaleupów

Podstawy tworzenia oprogramowania Java: Przewodnik po skutecznym outsourcingu

Zapoznaj się z tym niezbędnym przewodnikiem na temat skutecznego tworzenia oprogramowania Java outsourcing, aby zwiększyć wydajność, uzyskać dostęp do wiedzy specjalistycznej i osiągnąć sukces projektu z The Codest.

thecodest
Software Development

Kompletny przewodnik po outsourcingu w Polsce

Wzrost liczby outsourcing w Polsce jest napędzany przez postęp gospodarczy, edukacyjny i technologiczny, sprzyjający rozwojowi IT i przyjazny klimat dla biznesu.

TheCodest
Rozwiązania dla przedsiębiorstw i scaleupów

Kompletny przewodnik po narzędziach i technikach audytu IT

Audyty IT zapewniają bezpieczne, wydajne i zgodne z przepisami systemy. Dowiedz się więcej o ich znaczeniu, czytając cały artykuł.

The Codest
Jakub Jakubowicz CTO & Współzałożyciel

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polska

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

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