window.pipedriveLeadboosterConfig = { bas: 'leadbooster-chat.pipedrive.com', företagId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = fönster if (w.LeadBooster) { console.warn('LeadBooster finns redan') } annars { w.LeadBooster = { q: [], on: funktion (n, h) { this.q.push({ t: "o", n: n, h: h }) }, trigger: funktion (n) { this.q.push({ t: 't', n: n }) }, } } })() Stimulus.js: Ett alternativ till JS-ramverk för Rails-appar - The Codest
Codest
  • Om oss
  • Tjänster
    • Utveckling av programvara
      • Frontend-utveckling
      • Backend-utveckling
    • Staff Augmentation
      • Frontend-utvecklare
      • Backend-utvecklare
      • Dataingenjörer
      • Ingenjörer inom molntjänster
      • QA-ingenjörer
      • Övriga
    • Det rådgivande
      • Revision och rådgivning
  • Industrier
    • Fintech & bankverksamhet
    • E-commerce
    • Adtech
    • Hälsoteknik
    • Tillverkning
    • Logistik
    • Fordon
    • IOT
  • Värde för
    • VD OCH KONCERNCHEF
    • CTO
    • Leveranschef
  • Vårt team
  • Fallstudier
  • Vet hur
    • Blogg
    • Möten
    • Webbinarier
    • Resurser
Karriär Ta kontakt med oss
  • Om oss
  • Tjänster
    • Utveckling av programvara
      • Frontend-utveckling
      • Backend-utveckling
    • Staff Augmentation
      • Frontend-utvecklare
      • Backend-utvecklare
      • Dataingenjörer
      • Ingenjörer inom molntjänster
      • QA-ingenjörer
      • Övriga
    • Det rådgivande
      • Revision och rådgivning
  • Värde för
    • VD OCH KONCERNCHEF
    • CTO
    • Leveranschef
  • Vårt team
  • Fallstudier
  • Vet hur
    • Blogg
    • Möten
    • Webbinarier
    • Resurser
Karriär Ta kontakt med oss
Pil tillbaka GÅ TILLBAKA
2020-05-13
Utveckling av programvara

Stimulus.js: Ett alternativ till JS-ramverk för Rails-appar

Codest

Pawel Muszynski

Software Engineer

Som skaparna säger är Stimulus ett JavaScript-ramverk med blygsamma ambitioner, som inte försöker ta över hela din frontend utan att utöka HTML med precis tillräckligt beteende för att få den att lysa.

Jag vet vad du tänker... En till JavaScript ramverk? Det finns redan så många av dem! Du har rätt, men den här fångade min uppmärksamhet eftersom den skapades av Basecamp. Du känner förmodligen till det här företaget, de är skaparna av Ruby on Rails. De skapade också Turbolänkar, och jag nämner detta eftersom Stimulus passar utmärkt ihop med den. Så det kanske är värt att ge Stimulus ett försök?

Hur fungerar det?

Stimulus fungerar genom att övervaka sidan och vänta på att data-controller attribut ska visas. Det data-controller värde kopplar samman och kopplar bort Stimulus-kontroller. Utgångspunkten är enkel: precis som klass är en koppling mellan HTML och CSS, data-controller är en brygga från HTML till JavaScript. Stimulus lägger också till data-handling attributet, som beskriver hur händelser på sidan ska trigga kontrollenhetens metoder, och data-mål attributet, som ger dig ett handtag för att hitta element i kontrollerns scope.

Enkel installation

Om din Rails-app använder en webpacker gem kan du installera Stimulus med ett enkelt kommando eftersom webpacker gem tillhandahåller en uppgift för att installera Stimulus. Kör bara följande kommando i din Rails-rotkatalog:

rails webpacker:install:stimulus
Detta lägger till Stimulus till paket.json och skapar följande två filer: app/javascript/controllers/index.js:

import { Application } från "stimulus"
import { definitionsFromContext } från "stimulus/webpack-hjälpmedel"

const applikation = Applikation.start()
const context = require.context("controllers", true, /_controller.js$/)
application.load(definitionerFrånContext(context))

Du kan se att webpacks require.context-hjälpare anropas. Den skickade sedan det resulterande sammanhanget till Application#load-metoden. Detta innebär att vår applikation letar efter filer med namnet[identifierare]_controller.js i app/javascript/controllers/ där identifieraren motsvarar kontrollerns data-kontroller-identifierare i din HTML. Detta är exakt den plats där vi ska placera Stimulus-kontrollerna.
Appen/javascript/controllers/hello_controller.js genereras också. Detta är bara ett exempel på en controller som vi kan leka med.

Grundläggande användning

Ok, så vi har hello_controller.js fil som skapats med följande kod:

importera { Controller } från "stimulus"

export default class extends Controller {
statiska mål = ["output"]
connect() {
this.outputTarget.textContent = "Hej, Stimulus!
}
}

Men som du vet kommer vi inte att se några effekter om vi inte gör kopplingen mellan HTML och JavaScript. Låt oss lägga till lite kod i din HTML-vy. Du kan lägga till den här när du vill:

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

Och vet du vad? Det är allt! Om du laddar om din sida och ser "Hello, Stimulus!" på din sida betyder det att anslutningen fungerar som den ska. Enkelt, eller hur?
Okej, men det här är bara en vanlig textvisning. Kan vi få lite action? Ja, det kan vi! Som jag nämnde tidigare finns det också data-handling attribut. Låt oss sedan ändra vår HTML-vy:

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

Och Stimulus-styrenheten app/javascript/controllers/hello_controller.js:

importera { Controller } från "stimulus"

export default class extends Controller {
statiska mål = ["output", "days"]
connect() {
this.outputTarget.textContent = "Hur länge har du varit i karantän?
}
beräkna() {
const element = this.daysTarget
const dagar = element.värde
const lockdownDays = 14
låt daysLeft = lockdownDays - days

if (daysLeft < 1) {
  alert("Du är fri!")
}
annars {
  alert(`Antal dagar du behöver vara i karantän: ${daysLeft}`)
}

}
}

Här har vi en mycket enkel app som beräknar hur länge vi måste stanna i karantän. Vi lyckades göra detta genom att använda data-action-attributet i HTML.
Du kan se att vi också har lagt till "dagar" i listan över mål i JavaScript-koden. När vi gör detta skapar Stimulus automatiskt en detta.daysTarget egenskap som returnerar det första matchande målelementet.

Vad mer behöver du veta?

Återkallelser

Du har säkert märkt att det finns en ansluta() metoden i båda exemplen. Den här är för inbyggda callbacks. Du bör känna till dem alla och deras livscykel, så här är de:
initiera: en gång, när styrenheten instansieras första gången,
ansluta: närhelst styrenheten är ansluten till DOM,
koppla bort: närhelst styrenheten kopplas bort från DOM.

Beskrivning av åtgärden

Den data-handling värde klick->hello#beräkna kallas en åtgärdsbeskrivning. Denna deskriptor säger att:

  • Klicka är händelsens namn,
  • hej är identifieraren för styrenheten,
  • beräkna är namnet på metoden.

Mål

Precis som för åtgärder har Stimulus en måldeskriptor. Den hallå.dagar deskriptorn säger det: hej är identifieraren för styrenheten,
dagar är målets namn.

I det föregående exemplet nämnde jag att Stimulus skapar detta.daysTarget när det finns "dagar" i listan över mål. Du behöver också veta att fler egenskaper kan skapas. I relation till exemplet kan du ha:

detta.daysTarget som utvärderas upp till det första målet i styrenhetens scope. Om det inte finns något mål flaggar egenskapen ett fel,
detta.dagarMål utvärderar upp till en array av alla källmål i styrenhetens scope,
this.hasDaysTarget returnerar true om det finns ett mål eller false om det inte finns något.

Som du kan se är Stimulus enkelt och kan enkelt läggas till i din applikation. Det vinner viss popularitet i RoR-communityn och jag är inte förvånad. Som Ruby-utvecklare själv tycker jag verkligen om att arbeta med Stimulus. Så vad sägs om att ta det för en snurr?

Läs mer om detta:

  • Utveckling av webbapplikationer: Varför är Ruby on Rails en teknik som är värd att välja?
  • Dags för en ny verklighet. En era av distansarbete har börjat för en månad sedan
  • 5 skäl till varför du hittar kvalificerade Ruby-utvecklare i Polen

Relaterade artiklar

Utveckling av programvara

Bygg framtidssäkrade webbappar: Insikter från The Codest:s expertteam

Upptäck hur The Codest utmärker sig genom att skapa skalbara, interaktiva webbapplikationer med banbrytande teknik som ger sömlösa användarupplevelser på alla plattformar. Läs om hur vår expertis driver digital omvandling och affärsutveckling...

DEKODEST
Utveckling av programvara

Topp 10 Lettlandsbaserade mjukvaruutvecklingsföretag

Läs mer om Lettlands främsta mjukvaruutvecklingsföretag och deras innovativa lösningar i vår senaste artikel. Upptäck hur dessa teknikledare kan hjälpa till att lyfta ditt företag.

thecodest
Lösningar för företag och uppskalningsföretag

Java Software Development Essentials: En guide till framgångsrik outsourcing

Utforska denna viktiga guide om framgångsrik outsourcing av Java-programvaruutveckling för att förbättra effektiviteten, få tillgång till expertis och driva projektframgång med The Codest.

thecodest
Utveckling av programvara

Den ultimata guiden till outsourcing i Polen

Den kraftiga ökningen av outsourcing i Polen drivs av ekonomiska, utbildningsmässiga och tekniska framsteg, vilket främjar IT-tillväxt och ett företagsvänligt klimat.

TheCodest
Lösningar för företag och uppskalningsföretag

Den kompletta guiden till verktyg och tekniker för IT-revision

IT-revisioner säkerställer säkra, effektiva och kompatibla system. Läs mer om hur viktiga de är genom att läsa hela artikeln.

Codest
Jakub Jakubowicz CTO och medgrundare

Prenumerera på vår kunskapsbas och håll dig uppdaterad om expertisen från IT-sektorn.

    Om oss

    The Codest - Internationellt mjukvaruutvecklingsföretag med teknikhubbar i Polen.

    Förenade kungariket - Huvudkontor

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokala tekniknav

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

      Codest

    • Hem
    • Om oss
    • Tjänster
    • Fallstudier
    • Vet hur
    • Karriär
    • Ordbok

      Tjänster

    • Det rådgivande
    • Utveckling av programvara
    • Backend-utveckling
    • Frontend-utveckling
    • Staff Augmentation
    • Backend-utvecklare
    • Ingenjörer inom molntjänster
    • Dataingenjörer
    • Övriga
    • QA-ingenjörer

      Resurser

    • Fakta och myter om att samarbeta med en extern partner för mjukvaruutveckling
    • Från USA till Europa: Varför väljer amerikanska startup-företag att flytta till Europa?
    • Jämförelse av Tech Offshore Development Hubs: Tech Offshore Europa (Polen), ASEAN (Filippinerna), Eurasien (Turkiet)
    • Vilka är de största utmaningarna för CTO:er och CIO:er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Användarvillkor för webbplatsen

    Copyright © 2025 av The Codest. Alla rättigheter reserverade.

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