window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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 - nopea tapa luoda reaktiivisia sovelluksia - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2021-06-22
Ohjelmistokehitys

StimulusReflex - nopea tapa luoda reaktiivisia sovelluksia.

Codest

Pawel Muszynski

Software Engineer

Mikä on StimulusReflex? Nykyään melko suosittu HTML over-the-wire -lähestymistapa johti meidät luomaan kehyksiä ja kirjastoja, jotka lähettävät HTML:n langan yli JSONin sijaan. StimulusReflex on yksi niistä.

Se on uusi tapa luoda reaktiivinen käyttöliittymä vuonna Ruby on Rails.
StimulusReflex laajentaa Railsin ja Stimuluksen ominaisuuksia kaappaamalla käyttäjän vuorovaikutuksen ja välittämällä sen Railsille reaaliaikaisten websockettien kautta. Sivut renderöidään nopeasti uudelleen ja kaikki päivitykset lähetetään asiakkaalle CableReadyn kautta.

CableReady mahdollistaa reaaliaikaisten päivitysten luomisen käynnistämällä asiakaspuolen DOM-muutoksia, tapahtumia ja ilmoituksia seuraavien välityksellä ActionCable. Toisin kuin Ajax, operaatiot eivät aina ole käyttäjän, vaan esimerkiksi selaimen, vaan ne voivat olla myös työntekijöiden käynnistämiä.

StimulusReflex on alun perin saanut inspiraationsa Phoenixin LiveView-ohjelmasta (vaihtoehto SPA:lle). StimulusReflexin tavoitteena on aina ollut tehdä modernien sovellusten rakentamisesta Railsilla tuottavin ja miellyttävin vaihtoehto. Ja mielestäni he ovat juuri tässä onnistuneet.

Miksi meidän pitäisi käyttää StimulusReflexiä?

Se on yksinkertaista, keskittyä kehittämään tuote sen sijaan, että otettaisiin käyttöön johdonmukaisia muutoksia nykyaikaisessa JavaScript. Myös, StimulusReflex sovelluksissa on yksinkertaiset, tiiviit ja selkeät koodi ja integroituvat saumattomasti Ruby on Rails. Tämän ansiosta pienet RoR-tiimit voivat tehdä suuria asioita, vaikka heillä ei olisi suurta React-tietämystä, Vue tai niiden nykyaikaiset JavaScript-ratkaisut.

Miten StimulusReflex toimii?

Reflex

Reflex on transaktionaalinen käyttöliittymäpäivitys, joka tapahtuu pysyvän avoimen yhteyden kautta palvelimeen. StimulusReflex kartoittaa pyynnöt Reflex luokka. Reflex luokat ovat app/refleksit hakemisto.

 class PostReflex < ApplicationReflex
 end


Jos luomme Reflex-luokan generaattorilla, näemme, että luokkamme sisältää tämän kommentin:

# Kaikki Reflex-instanssit sisältävät CableReady::Broadcasterin ja paljastavat seuraavat ominaisuudet:
  #
  # - yhteys - ActionCable-yhteys,
  # - channel - ActionCable-kanava,
  # - request - ActionDispatch::Request-välityspalvelin socket-yhteyttä varten,
  # - istunto - nykyisen vierailijan ActionDispatch::Session-säilö,
  # - flash - nykyisen pyynnön ActionDispatch::Flash::FlashHash,
  # - url - refleksin käynnistäneen sivun URL-osoite,
  # - params - elementin lähimmän lomakkeen parametrit (jos sellaisia on),
  # - element - Hashin kaltainen objekti, joka edustaa refleksin käynnistänyttä HTML-elementtiä,
  # - signed - käyttää allekirjoitettua globaalia ID:tä mallin attribuutin määrittelemän tietokokonaisuuden kartoittamiseen, esim. element.signed[:foo],
  # - unsigned - käyttää unsigned Global ID:tä kartoittamaan malliin liitetyn datasetin, esim. element.unsigned[:foo],
  # - cable_ready - erityinen cable_ready, joka voi lähettää lähetyksen nykyiselle vierailijalle (sulkuja ei tarvita),
  # - reflex_id - UUIDv4, joka yksilöi yksiselitteisesti jokaisen refleksin.

Kuten näemme, luokassamme on muutamia ominaisuuksia, joita voidaan käyttää. Alussa mielenkiintoisin on elementti ominaisuus, joka sisältää kaikki Stimulus-kontrollerin DOM-elementin attribuutit sekä muita ominaisuuksia, kuten tagName, tarkistettu ja arvo.

StimulusReflex antaa meille myös joukon takaisinkutsuja, joiden avulla voimme hallita refleksin prosesseja:

  • before_reflex
  • around_reflex
  • after_reflex

Kuten huomaat, nimeäminen on hyvin samanlaista kuin Active Record Callbacks.

Refleksin ilmoittaminen HTML:ssä data-attribuutilla

Nopein tapa ottaa Reflex-toiminnot käyttöön on käyttää komentoa data-refleksi ominaisuus. Syntaksi noudattaa Stimulus-muotoa: [DOM-tapahtuma]->[ReflexClass]#[toiminto]

"="">StimulusReflex-asiakirjat. Huuto kaikille StimulusReflexin kehittämiseen osallistuneille!

Tässä esimerkissä data-refleksi attribuutti osoitti PostRefex luokka ja lisäys menetelmä klikkaa tapahtuma. Täällä me myös ohitimme data-post-id jota voimme myöhemmin käyttää Reflex-luokassa kautta element.dataset[:post_id].

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

post.increment! :likes
end
end

Morphs

Oletusarvoisesti, StimulusReflex päivittää koko sivun (Page morph). Kun ohjaimen toiminto on käsitelty uudelleen, näkymämalli renderöity ja raakahTML lähetetty selaimeen, StimulusReflex käyttää komentoa morphdom kirjaston avulla voit tehdä pienimmän mahdollisen määrän DOM-muutoksia, jotka ovat tarpeen käyttöliittymän päivittämiseksi muutamassa millisekunnissa.

StimulusReflex on kolme erillistä toimintatilaa:

Page Morph - tekee koko sivun päivityksen,
Valitsija Morph - korvaa elementin sisällön,
Ei mitään Morph - suorittaa toimintoja, jotka eivät päivitä sivua (esimerkiksi työntekijän kutsuminen).

Muuttaa meidän PostReflex#increment (lisäys) menetelmää, voimme yksinkertaisesti käyttää morph avainsanaa ja kohdista se osittainen, jonka haluamme päivittää.

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

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

Ajatukseni

Tämä melko lyhyt johdanto riittää aloittamaan matkasi reaktiivisen Railsin kanssa käyttämällä StimulusReflex. Eikö olekin hienoa pystyä luomaan reaktiivinen SPA-sovellus vain muutamalla Ruby-rivillä ja ilman JavaScript:tä? Minusta koko tämä HTML over-the-wire -ajatus on jännittävä, ja aion varmasti kaivaa tätä aihetta tulevaisuudessa. Toistaiseksi suosittelen sinulle lämpimästi StimulusReflex-asiakirjat. Huuto kaikille StimulusReflexin kehittämiseen osallistuneille!

Lue lisää:

Miksi sinun pitäisi (luultavasti) käyttää Typescriptiä?

Miten projektia ei saa tappaa huonoilla koodauskäytännöillä?

Tiedonhakustrategiat NextJS:ssä

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Tulevaisuuden web-sovellusten rakentaminen: The Codest:n asiantuntijatiimin näkemyksiä

Tutustu siihen, miten The Codest loistaa skaalautuvien, interaktiivisten verkkosovellusten luomisessa huipputeknologian avulla ja tarjoaa saumattomia käyttäjäkokemuksia kaikilla alustoilla. Lue, miten asiantuntemuksemme edistää digitaalista muutosta ja liiketoimintaa...

THECODEST
Ohjelmistokehitys

Top 10 Latviassa toimivaa ohjelmistokehitysyritystä

Tutustu Latvian parhaisiin ohjelmistokehitysyrityksiin ja niiden innovatiivisiin ratkaisuihin uusimmassa artikkelissamme. Tutustu siihen, miten nämä teknologiajohtajat voivat auttaa nostamaan liiketoimintaasi.

thecodest
Yritys- ja skaalausratkaisut

Java-ohjelmistokehityksen perusteet: A Guide to Outsourcing Successfully

Tutustu tähän keskeiseen oppaaseen Java-ohjelmistokehityksen onnistuneesta ulkoistamisesta tehokkuuden parantamiseksi, asiantuntemuksen saamiseksi ja projektin onnistumiseksi The Codestin avulla.

thecodest
Ohjelmistokehitys

Perimmäinen opas ulkoistamiseen Puolassa

Ulkoistamisen lisääntyminen Puolassa johtuu taloudellisesta, koulutuksellisesta ja teknologisesta kehityksestä, joka edistää tietotekniikan kasvua ja yritysystävällistä ilmapiiriä.

TheCodest
Yritys- ja skaalausratkaisut

Täydellinen opas IT-tarkastustyökaluihin ja -tekniikoihin

Tietotekniikan tarkastuksilla varmistetaan turvalliset, tehokkaat ja vaatimustenmukaiset järjestelmät. Lue lisää niiden merkityksestä lukemalla koko artikkeli.

Codest
Jakub Jakubowicz teknologiajohtaja ja toinen perustaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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