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 on juba olemas') } 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 - kiire viis reaktiivsete rakenduste loomiseks - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2021-06-22
Tarkvaraarendus

StimulusReflex - kiire viis reaktiivsete rakenduste loomiseks

The Codest

Pawel Muszynski

Software Engineer

Mis on StimulusReflex? Tänapäeval üsna populaarne HTML over-the-wire lähenemine viis meid raamistike ja raamatukogude loomisele, mis saadavad HTML-i üle traadi, selle asemel, et kasutada JSON-i. StimulusReflex on üks neist.

See on uus viis reaktiivse kasutajaliidese loomiseks aastal Ruby on Rails.
StimulusReflex laiendab Railsi ja Stimuluse võimalusi, jäädvustades kasutaja interaktsioonid ja edastades need Railsile reaalajas veebisokettide kaudu. Leheküljed renderdatakse kiiresti ümber ja kõik uuendused saadetakse kliendile CableReady kaudu.

CableReady võimaldab luua reaalajas uuendusi, käivitades kliendipoolseid DOM-i muudatusi, sündmusi ja teateid läbi ActionCable. Erinevalt Ajaxist ei ole operatsioonid alati kasutaja poolt algatatud, näiteks võivad neid algatada ka töötajad.

StimulusReflex oli algselt inspireeritud Phoenixi LiveView'st (alternatiiv SPA-le). StimulusReflexi eesmärk on alati olnud muuta kaasaegsete rakenduste ehitamine Railsiga kõige produktiivsemaks ja nauditavamaks võimaluseks. Ja minu arvates on nad siinkohal just seda saavutanud.

Miks peaksime kasutama StimulusReflexi?

See on lihtne, et keskenduda arendama toode selle asemel, et viia sisse järjepidevaid muudatusi kaasaegses JavaScript. Samuti, StimulusReflex rakendused on lihtsad, lühikesed ja selged kood ja integreerida sujuvalt Ruby on Rails. See võimaldab väikestel RoR-meeskondadel teha suuri asju isegi ilma suurte React-teadmisteta, Vue või nende moodsad JavaScript lahendused.

Kuidas StimulusReflex töötab?

Refleks

Refleks on tehinguline kasutajaliidese uuendamine, mis toimub püsiva avatud ühenduse kaudu serveriga. StimulusReflex kaardistab taotlused Refleks klass. Refleks klassid on app/refleksid kataloogi.

 class PostReflex < ApplicationReflex
 end


Kui me loome Reflex klassi generaatoriga, näeme, et meie klass sisaldab seda kommentaari:

# Kõik Reflexi instantsid sisaldavad CableReady::Broadcaster'i ja avaldavad järgmised omadused:
  #
  # - ühendus - ühendus ActionCable,
  # - channel - ActionCable'i kanal,
  # - request - ActionDispatch::Request proxy soketiühenduse jaoks,
  # - session - ActionDispatch::Session store praeguse külastaja jaoks,
  # - flash - ActionDispatch::Flash::FlashHash praeguse taotluse jaoks,
  # - url - reflektsiooni käivitanud lehekülje URL,
  # - params - elemendi lähima vormi parameetrid (kui need on olemas),
  # - element - Hash-taoline objekt, mis kujutab HTML-elementi, mis käivitas refleksi,
  # - signed - kasutab mudelile omistatud andmekogumi kaardistamiseks allkirjastatud globaalset ID-d, nt element.signed[:foo],
  # - unsigned - kasutab mudelile omistatud andmekogumi kaardistamiseks märkimata globaalset ID-d, nt element.unsigned[:foo],
  # - cable_ready - spetsiaalne cable_ready, mida saab edastada praegusele külastajale (sulgusid ei ole vaja),
  # - reflex_id - UUIDv4, mis identifitseerib üheselt iga refleksi.

Nagu näeme, on vähe omadusi, mida saab meie klassis kasutada. Kõige huvitavam on alguses element omadus, mis sisaldab kõiki Stimuluse kontrolleri DOM-elemendi atribuute, samuti muid omadusi, näiteks tagName, kontrollitud ja väärtus.

StimulusReflex annab meile ka hulga tagasikutseid, mis võimaldavad meil kontrollida meie reflekside protsesse:

  • before_reflex
  • around_reflex
  • after_reflex

Nagu näete, on nimetamine väga sarnane Active Record Callbacks'ile.

Refleksi deklareerimine HTML-is andmeatribuudiga

Kõige kiirem viis refleksitegevuste lubamiseks on kasutada käsku andmerefleks atribuut. Süntaks järgib Stimuluse vormingut: [DOM-event]->[ReflexClass]#[action]

"="">StimulusReflex dokumentatsioon. Kiitus kõigile StimulusReflexi arendamisse kaasatud inimestele!

Selles näites on andmerefleks atribuut osutas PostRefex klassi ja juurdekasv meetodi kohta kliki sündmus. Siin me ka möödasime data-post-id mida saame hiljem kasutada Reflex klassis läbi element.dataset[:post_id].

class PostsReflex < ApplicationReflex
def increment
post = Post.find(element.dataset[:post_id])

post.increment! :likes
end
end

Morphs

Vaikimisi, StimulusReflex uuendab kogu lehekülge (lehekülje morph). Pärast kontrolleri tegevuse ümbertöötlemist, vaate malli renderdamist ja toore HTML-i saatmist brauserile kasutab StimulusReflex morphdom raamatukogu, et teha väikseim arv DOM-muudatusi, mis on vajalikud teie kasutajaliidese värskendamiseks vaid mõne millisekundi jooksul.

StimulusReflex on kolm erinevat töörežiimi:

Page Morph - teostab täies leheküljes uuenduse,
Selector Morph - asendab elemendi sisu,
Miski Morph - täidab funktsioone, mis ei uuenda teie lehte (näiteks kutsub teie töötajat).

Et muuta meie PostReflex#increment meetodit, saame lihtsalt kasutada morf võtmesõna ja sihtmärgiks osaline, mida me tahame uuendada.

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

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

Minu mõtted

See üsna lühike sissejuhatus on piisav, et alustada oma teekonda reaktiivse Rails'i kasutamisega. StimulusReflex. Kas pole mitte suurepärane võimalus luua reaktiivne SPA-rakendus vaid mõne Ruby-reaga ja ilma JavaScript-ta? Minu jaoks on kogu see HTML over-the-wire idee põnev ja ma kindlasti kaevun tulevikus sellesse teemasse. Praegu soovitan ma teile väga StimulusReflex dokumentatsioon. Shoutout kõigile StimulusReflexi arendamisse kaasatud inimestele!

Loe edasi:

Miks peaksite (tõenäoliselt) kasutama Typescript'i

Kuidas mitte tappa projekti halbade kodeerimistavadega?

NextJS-i andmete hankimise strateegiad

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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