window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = vindue if (w.LeadBooster) { console.warn('LeadBooster findes allerede') } 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: Et JS-framework-alternativ til Rails-apps - The Codest
Codest
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Industrier
    • Fintech og bankvirksomhed
    • E-commerce
    • Adtech
    • Sundhedsteknologi
    • Produktion
    • Logistik
    • Biler
    • IOT
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
Pil tilbage GÅ TILBAGE
2020-05-13
Udvikling af software

Stimulus.js: Et JS-framework-alternativ til Rails-apps

Codest

Pawel Muszynski

Software Engineer

Som skaberne siger, er Stimulus en JavaScript-ramme med beskedne ambitioner, som ikke forsøger at overtage hele din frontend, men at udvide HTML med lige præcis nok adfærd til at få den til at skinne.

Jeg ved, hvad du tænker ... En anden JavaScript rammer? Der er allerede så mange af dem! Du har ret, men denne fangede min opmærksomhed, da den blev skabt af Basecamp. Du kender sikkert dette firma, de er skaberne af Ruby on Rails. De skabte også Turbolinks, og jeg nævner dette, fordi Stimulus passer smukt sammen med den. Så måske er det værd at prøve Stimulus?

Hvordan fungerer det?

Stimulus fungerer ved at overvåge siden og vente på, at data-controller attributten skal vises. Den data-controller værdi forbinder og afkobler Stimulus-controllere. Præmissen er enkel: Ligesom class er en forbindelse mellem HTML og CSS, data-controller er en bro fra HTML til JavaScript. Stimulus tilføjer også data-handling attributten, som beskriver, hvordan hændelser på siden skal udløse controller-metoderne, og data-mål attribut, som giver dig et håndtag til at finde elementer i controllerens scope.

Nem installation

Hvis din Rails-app bruger en webpacker-perle, kan du installere Stimulus med en enkelt kommando, da webpacker-perlen indeholder en opgave til installation af Stimulus. Bare kør følgende kommando i din Rails-rodmappe:

rails webpacker:install:stimulus
Dette tilføjer stimulus til pakke.json og opretter følgende to filer: app/javascript/controllers/index.js:

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

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

Du kan se, at webpacks require.context-hjælper bliver kaldt. Derefter sendes den resulterende kontekst til Application#load-metoden. Det betyder, at vores applikation leder efter filer med navnet[identifier]_controller.js i app/javascript/controllers/ hvor identifikatoren svarer til controllerens data-controller-identifikator i din HTML. Det er præcis det sted, hvor vi skal placere Stimulus-controllerne.
App'en/javascript/controllers/hello_controller.js bliver også genereret. Dette er blot et eksempel på en controller, som vi kan lege med.

Grundlæggende brug

Ok, så vi har hello_controller.js fil oprettet med følgende Kode:

import { Controller } fra "stimulus"

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

Men som du ved, vil vi ikke se nogen effekter, hvis vi ikke laver forbindelsen mellem HTML og JavaScript. Lad os tilføje noget kode til din HTML-visning. Du kan placere den, hvor du vil:

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

Og ved du hvad? Det var det hele! Hvis du genindlæser din side og ser "Hello, Stimulus!" på din side, betyder det, at forbindelsen fungerer korrekt. Enkelt, ikke sandt?
Okay, men det er bare en almindelig tekstvisning. Kan vi få noget action? Ja, det kan vi! Som jeg nævnte før, er der også data-handling attribut. Lad os så ændre vores HTML-visning:

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

Og stimulus-controlleren app/javascript/controllers/hello_controller.js:

import { Controller } fra "stimulus"

export default class extends Controller {
statiske mål = ["output", "days"].
connect() {
this.outputTarget.textContent = "Hvor længe har du været i karantæne?
}
beregn() {
const element = this.daysTarget
const days = element.value
const lockdownDays = 14
let daysLeft = lockdownDays - days

if (daysLeft < 1) {
  alert('Du er fri!')
}
ellers {
  alert(`Mængden af dage, du skal være i karantæne: ${daysLeft}`)
}

}
}

Her har vi en meget enkel app, der beregner, hvor længe vi skal være i karantæne. Det har vi gjort ved at bruge data-action-attributten i HTML.
Du kan se, at vi også har tilføjet "dage" til listen over mål i JavaScript-koden. Når vi gør dette, opretter Stimulus automatisk en this.daysTarget egenskab, som returnerer det første matchende målelement.

Hvad har du ellers brug for at vide?

Tilbagekaldelser

Du har sikkert bemærket, at der er en connect() metode i begge eksempler. Denne er til indbyggede tilbagekald. Du bør kende dem alle og deres livscyklus, så her er de:
initialisere: én gang, når controlleren instantieres første gang,
forbinde: når som helst controlleren er tilsluttet DOM'en,
Afbryd forbindelsen: hver gang controlleren kobles fra DOM'en.

Beskrivelse af handling

Den data-handling værdi klik->hello#beregn kaldes en handlingsdeskriptor. Denne deskriptor siger, at:

  • klik er begivenhedens navn,
  • Hej er controller-identifikatoren,
  • beregn er navnet på metoden.

Målsætninger

Ligesom for handlinger har Stimulus en målbeskrivelse. Den hello.days deskriptor siger det: Hej er controller-identifikatoren,
dage er målets navn.

I det forrige eksempel nævnte jeg, at Stimulus skaber this.daysTarget når der er "days" på listen over mål. Du skal også vide, at der kan oprettes flere egenskaber. I forhold til eksemplet kan du have:

this.daysTarget som evaluerer op til det første mål i controllerens scope. Hvis der ikke er noget mål, markerer egenskaben en fejl,
this.daysTargets evaluerer op til et array af alle kildemål i controllerens scope,
this.hasDaysTarget returnerer true, hvis der er et mål, eller false, hvis der ikke er.

Som du kan se, er Stimulus enkel og kan nemt tilføjes til dit program. Det vinder en vis popularitet i RoR-fællesskabet, og det overrasker mig ikke. Jeg er selv Ruby-udvikler, og jeg nyder virkelig at arbejde med Stimulus. Så hvad med at prøve det?

Læs mere om det:

  • Udvikling af webapps: Hvorfor er Ruby on Rails en teknologi, der er værd at vælge?
  • Tid til en ny virkelighed. En æra med fjernarbejde er startet for en måned siden
  • 5 grunde til, at du kan finde kvalificerede Ruby-udviklere i Polen

Relaterede artikler

Udvikling af software

Byg fremtidssikrede webapps: Indsigt fra The Codest's ekspertteam

Oplev, hvordan The Codest udmærker sig ved at skabe skalerbare, interaktive webapplikationer med banebrydende teknologier, der leverer sømløse brugeroplevelser på tværs af alle platforme. Lær, hvordan vores ekspertise driver digital transformation og...

DENKODEST
Udvikling af software

Top 10 Letlands-baserede softwareudviklingsvirksomheder

Læs om Letlands bedste softwareudviklingsvirksomheder og deres innovative løsninger i vores seneste artikel. Find ud af, hvordan disse teknologiledere kan hjælpe med at løfte din virksomhed.

thecodest
Løsninger til virksomheder og scaleups

Grundlæggende om Java-softwareudvikling: En guide til succesfuld outsourcing

Udforsk denne vigtige guide til vellykket outsourcing af Java-softwareudvikling for at forbedre effektiviteten, få adgang til ekspertise og skabe projektsucces med The Codest.

thecodest
Udvikling af software

Den ultimative guide til outsourcing i Polen

Den voldsomme stigning i outsourcing i Polen er drevet af økonomiske, uddannelsesmæssige og teknologiske fremskridt, der fremmer it-vækst og et erhvervsvenligt klima.

TheCodest
Løsninger til virksomheder og scaleups

Den komplette guide til IT-revisionsværktøjer og -teknikker

IT-revisioner sikrer sikre, effektive og kompatible systemer. Lær mere om deres betydning ved at læse hele artiklen.

Codest
Jakub Jakubowicz CTO og medstifter

Tilmeld dig vores vidensbase, og hold dig opdateret om ekspertisen fra it-sektoren.

    Om os

    The Codest - International softwareudviklingsvirksomhed med tech-hubs i Polen.

    Storbritannien - Hovedkvarter

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

    Polen - Lokale teknologiske knudepunkter

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

      Codest

    • Hjem
    • Om os
    • Serviceydelser
    • Casestudier
    • Ved hvordan
    • Karriere
    • Ordbog

      Serviceydelser

    • Det rådgivende
    • Udvikling af software
    • Backend-udvikling
    • Frontend-udvikling
    • Staff Augmentation
    • Backend-udviklere
    • Cloud-ingeniører
    • Dataingeniører
    • Andet
    • QA-ingeniører

      Ressourcer

    • Fakta og myter om at samarbejde med en ekstern softwareudviklingspartner
    • Fra USA til Europa: Hvorfor beslutter amerikanske startups sig for at flytte til Europa?
    • Sammenligning af Tech Offshore-udviklingsknudepunkter: Tech Offshore Europa (Polen), ASEAN (Filippinerne), Eurasien (Tyrkiet)
    • Hvad er de største udfordringer for CTO'er og CIO'er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Vilkår for brug af hjemmesiden

    Copyright © 2025 af The Codest. Alle rettigheder forbeholdes.

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