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 }) }, } } })() StimulusReflex - en hurtig måde at skabe reaktive apps på - 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
2021-06-22
Udvikling af software

StimulusReflex - en hurtig måde at skabe reaktive apps på

Codest

Pawel Muszynski

Software Engineer

Hvad er StimulusReflex? Den i dag ret populære HTML-over-the-wire-tilgang har ført til oprettelsen af frameworks og biblioteker, der sender HTML over ledningen i stedet for at bruge JSON. StimulusReflex er en af dem.

Det er en ny måde at skabe en reaktiv brugergrænseflade i Ruby on Rails.
StimulusReflex udvider mulighederne i Rails og Stimulus ved at opfange brugerinteraktioner og sende dem til Rails via websockets i realtid. Siderne gengives hurtigt, og alle opdateringer sendes til klienten via CableReady.

CableReady gør det muligt at skabe opdateringer i realtid ved at udløse DOM-ændringer på klientsiden, begivenheder og meddelelser via ActionCable. I modsætning til Ajax igangsættes operationer ikke altid af brugeren, f.eks. kan de også igangsættes af arbejdere.

StimulusReflex var oprindeligt inspireret af Phoenix' LiveView (et alternativ til SPA). StimulusReflex' mål har altid været at gøre opbygning af moderne apps med Rails til den mest produktive og fornøjelige mulighed, der findes. Og efter min mening er det præcis, hvad de har opnået her.

Hvorfor skal vi bruge StimulusReflex?

Det er enkelt at fokusere på at udvikle en produkt i stedet for at indføre konsekvente ændringer i moderne JavaScript. Det gælder også, StimulusReflex applikationer har enkle, kortfattede og klare Kode og integreres problemfrit med Ruby on Rails. Det gør det muligt for små RoR-hold at gøre store ting, selv uden stor viden om React, Vue eller deres moderne JavaScript-løsninger.

Hvordan virker StimulusReflex?

Refleks

Refleks er en transaktionsbaseret opdatering af brugergrænsefladen, der finder sted via en vedvarende åben forbindelse til serveren. StimulusReflex mapper anmodninger til Refleks klasse. Refleks klasser er i app/reflexer bibliotek.

 class PostReflex < ApplikationsReflex
 slut


Hvis vi opretter Reflex-klassen med en generator, kan vi se, at vores klasse indeholder denne kommentar:

# Alle Reflex-instanser inkluderer CableReady::Broadcaster og udstiller følgende egenskaber:
  #
  # - connection - ActionCable-forbindelsen,
  # - channel - ActionCable-kanalen,
  # - request - en ActionDispatch::Request-proxy for socket-forbindelsen,
  # - session - ActionDispatch::Session-lageret for den aktuelle besøgende,
  # - flash - ActionDispatch::Flash::FlashHash for den aktuelle anmodning,
  # - url - URL'en til den side, der udløste refleksen,
  # - params - parametre fra elementets nærmeste formular (hvis nogen),
  # - element - et Hash-lignende objekt, der repræsenterer det HTML-element, der udløste refleksen,
  # - signed - bruger et signeret globalt ID til at mappe datasæt, der tilskrives en model, f.eks. element.signed[:foo],
  # - unsigned - bruger et unsigned Global ID til at kortlægge datasæt, der tilskrives en model, f.eks. element.unsigned[:foo],
  # - cable_ready - en særlig cable_ready, der kan sende til den aktuelle besøgende (ingen parenteser er nødvendige),
  # - reflex_id - en UUIDv4, der entydigt identificerer hver refleks.

Som vi kan se, er der kun få egenskaber, der kan bruges i vores klasse. Den mest interessante i begyndelsen er element der indeholder alle Stimulus-controllerens DOM-elementattributter samt andre egenskaber, som f.eks. tagnavn, kontrolleret og værdi.

StimulusReflex giver os også et sæt tilbagekaldelser, så vi kan styre vores refleksers processer:

  • før_refleks
  • omkring_reflex
  • efter_refleks

Som du kan se, er navngivningen meget lig Active Record Callbacks.

Deklaration af en refleks i HTML med data-attribut

Den hurtigste måde at aktivere Reflex-handlinger på er ved at bruge data-refleks attribut. Syntaksen følger Stimulus-formatet: [DOM-event]->[ReflexClass]#[action]

"="">StimulusReflex-dokumentation. Shoutout til alle, der har været involveret i udviklingen af StimulusReflex!

I dette eksempel er data-refleks attributten pegede på PostRefex klassen og forøgelse metode på klik begivenhed. Her sendte vi også data-post-id som vi senere kan bruge i Reflex-klassen gennem element.dataset[:post_id].

class PostsReflex < ApplikationsReflex
def forøgelse
post = Post.find(element.dataset[:post_id])

post.increment! :likes
end
end

Morfer

Som standard, StimulusReflex opdaterer hele siden (Page morph). Efter at have genbehandlet controller-handlingen, gengivet visningsskabelonen og sendt den rå HTML til din browser, bruger StimulusReflex Morfdom biblioteket til at foretage det mindste antal DOM-ændringer, der er nødvendige for at opdatere din brugergrænseflade på bare nogle få millisekunder.

StimulusReflex har tre forskellige funktionsmåder:

Page Morph - udfører en opdatering på hele siden,
Selector Morph - erstatter indholdet af et element,
Intet Morph - udfører funktioner, der ikke opdaterer din side (f.eks. at ringe til din medarbejder).

At ændre vores PostReflex#illæg metode, kan vi blot bruge morph og målrette den del, vi vil opdatere.

def forøgelse
post = Post.find(element.dataset[:post_id])
post.increment! :likes

morph "#posts_#{post.id}", render(partial: 'post', locals: { posts: post })
slut

Mine tanker

Denne ganske korte introduktion er nok til at starte din rejse med reaktive Rails ved hjælp af StimulusReflex. Er det ikke fantastisk at kunne skabe en reaktiv SPA-app med blot nogle få Ruby-linjer og uden JavaScript? For mig er hele denne HTML-over-the-wire-idé spændende, og jeg vil helt sikkert grave i dette emne i fremtiden. Indtil videre kan jeg varmt anbefale dig StimulusReflex dokumentation. En stor tak til alle, der har været involveret i udviklingen af StimulusReflex!

Læs mere om det:

Hvorfor du (sandsynligvis) bør bruge Typescript

Hvordan dræber man ikke et projekt med dårlig kodningspraksis?

Strategier for at hente data i NextJS

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