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 }) }, } } })() StimulusReflex - ett snabbt sätt att skapa reaktiva 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
2021-06-22
Utveckling av programvara

StimulusReflex - ett snabbt sätt att skapa reaktiva appar

Codest

Pawel Muszynski

Software Engineer

Vad är StimulusReflex? Ganska populär nuförtiden HTML over-the-wire-metoden ledde oss till skapandet av ramverk och bibliotek som skickar HTML över kabeln istället för att använda JSON. StimulusReflex är en av dem.

Det är ett nytt sätt att skapa reaktiva användargränssnitt i Ruby on Rails.
StimulusReflex utökar funktionerna i Rails och Stimulus genom att fånga upp användarinteraktioner och skicka dem till Rails via websockets i realtid. Sidorna renderas snabbt och alla uppdateringar skickas till klienten via CableReady.

CableReady gör det möjligt att skapa uppdateringar i realtid genom att utlösa DOM-ändringar, händelser och meddelanden på klientsidan via Handlingsbara. Till skillnad från Ajax initieras operationer inte alltid av användaren, till exempel en annan webbläsare, utan de kan också initieras av arbetare.

StimulusReflex var ursprungligen inspirerad av Phoenix LiveView (ett alternativ till SPA). StimulusReflex mål har alltid varit att göra byggandet av moderna appar med Rails till det mest produktiva och roliga alternativet som finns. Och enligt min mening är det exakt vad de uppnådde här.

Varför ska vi använda StimulusReflex?

Det är enkelt, att fokusera på att utveckla en Produkt istället för att införa konsekventa förändringar i moderna JavaScript. Också, StimulusReflex applikationerna är enkla, koncisa och tydliga kod och integreras sömlöst med Ruby on Rails. Detta gör att små RoR-team kan göra stora saker även utan stor kunskap om React, Vue eller deras moderna JavaScript-lösningar.

Hur fungerar StimulusReflex?

Reflex

Reflex är en transaktionell UI-uppdatering som sker via en ihållande öppen anslutning till servern. StimulusReflex mappar förfrågningar till Reflex klass. Reflex klasserna finns i app/reflexer katalog.

 klass PostReflex < ApplikationsReflex
 slut


Om vi skapar Reflex-klassen med en generator, kan vi se att vår klass innehåller denna kommentar:

# Alla Reflex-instanser inkluderar CableReady::Broadcaster och exponerar följande egenskaper:
  #
  # - anslutning - ActionCable-anslutningen,
  # - channel - ActionCable-kanalen,
  # - request - en ActionDispatch::Request-proxy för socketanslutningen,
  # - session - ActionDispatch::Session-lagret för den aktuella besökaren,
  # - flash - ActionDispatch::Flash::FlashHash för den aktuella begäran,
  # - url - URL:en för den sida som utlöste reflexen,
  # - params - parametrar från elementets närmaste formulär (om sådana finns),
  # - element - ett Hash-liknande objekt som representerar det HTML-element som utlöste reflexen,
  # - signed - använder ett signerat globalt ID för att mappa dataset som tillskrivs en modell, t.ex. element.signed[:foo],
  # - unsigned - använder ett osignerat globalt ID för att mappa dataset som tillskrivs en modell, t.ex. element.unsigned[:foo],
  # - cable_ready - en speciell cable_ready som kan sända till den aktuella besökaren (inga parenteser behövs),
  # - reflex_id - en UUIDv4 som unikt identifierar varje reflex.

Som vi kan se finns det några få egenskaper som kan användas i vår klass. Den mest intressanta i början kommer att vara element egenskap som innehåller alla Stimulus-kontrollantens DOM-elementattribut samt andra egenskaper, t.ex. taggNamn, kontrollerad och värde.

StimulusReflex ger oss också en uppsättning callbacks som gör att vi kan styra våra reflexprocesser:

  • före_reflex
  • runt_reflex
  • efter_reflex

Som du kan se är namngivningen mycket lik Active Record Callbacks.

Deklarera en reflex i HTML med data-attribut

Det snabbaste sättet att aktivera reflexåtgärder är genom att använda data-reflex attribut. Syntaxen följer Stimulus-format: [DOM-händelse]->[ReflexClass]#[åtgärd]

"="">StimulusReflex dokumentation. Ett stort tack till alla som har deltagit i utvecklingen av StimulusReflex!

I detta exempel är data-reflex attribut pekade ut den PostRefex klassen och ökning metod på Klicka evenemang. Här passerade vi också data-post-id som vi senare kan använda i Reflex-klassen genom element.dataset[:post_id].

klass PostsReflex < ApplikationsReflex
def inkrementering
post = Post.find(element.dataset[:post_id])

post.inkrement! :gillar
slut
slut

Morphs

Som standard, StimulusReflex uppdaterar hela sidan (Page morph). Efter att ha bearbetat kontrolleråtgärden, rendering av visningsmallen och skickat den råa HTML till din webbläsare använder StimulusReflex Morfdom biblioteket för att göra det minsta antalet DOM-modifieringar som krävs för att uppdatera ditt användargränssnitt på bara några millisekunder.

StimulusReflex har tre olika driftlägen:

Page Morph - utför en helsidesuppdatering,
Selector Morph - ersätter innehållet i ett element,
Ingenting Morph - utför funktioner som inte uppdaterar din sida (t.ex. att ringa din medarbetare).

För att ändra våra PostReflex#illägg kan vi helt enkelt använda metoden morph sökord och rikta in dig på den del som vi vill uppdatera.

def inkrement
post = Post.find(element.dataset[:post_id])
post.inkrement! :gillar

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

Mina tankar

Denna ganska korta introduktion räcker för att börja din resa med reaktiva Rails med hjälp av StimulusReflex. Är det inte fantastiskt att kunna skapa en reaktiv SPA-app med bara några Ruby-rader och ingen JavaScript? För mig är hela denna HTML over-the-wire-idé spännande, och jag kommer definitivt att gräva i detta ämne i framtiden. För nu rekommenderar jag starkt till dig StimulusReflex dokumentation. En stor eloge till alla som har varit inblandade i utvecklingen av StimulusReflex!

Läs mer om detta:

Varför du (förmodligen) bör använda Typescript

Hur undviker man att döda ett projekt med dåliga kodningsrutiner?

Strategier för datahämtning i NextJS

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