(function(w,d,s,l,i){w[l]=w[l]|||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=? 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); StimulusReflex - ātrs veids, kā izveidot reactive lietotnes - The Codest
The Codest
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Nozares
    • Fintech un banku darbība
    • E-commerce
    • Adtech
    • Healthtech
    • Ražošana
    • Loģistika
    • Automobiļu nozare
    • IOT
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
Atpakaļ bultiņa ATGRIEZTIES ATPAKAĻ
2019-04-24
Programmatūras izstrāde

StimulusReflex - ātrs veids, kā izveidot reactive lietotnes

The Codest

Pawel Muszynski

Software Engineer

Kas ir StimulusReflex? Mūsdienās diezgan populārā HTML over-the-wire pieeja noveda pie tā, ka tika radīti ietvari un bibliotēkas, kas sūta HTML pa vadu, nevis izmanto JSON. StimulusReflex ir viena no tām.

Tas ir jauns veids, kā izveidot reactive lietotāja saskarni. Ruby on Rails.
StimulusReflex paplašina funkcijas Sliedes un Stimulus, fiksējot lietotāja mijiedarbību un nododot to Rails, izmantojot reāllaika tīmekļa ligzdas. Lapas tiek ātri pārrenderētas un visi atjauninājumi tiek nosūtīti klientam, izmantojot CableReady.

CableReady ļauj izveidot reāllaika atjauninājumus, izraisot klienta puses DOM izmaiņas, notikumus un paziņojumus, izmantojot ActionCable. Atšķirībā no Ajax operācijas ne vienmēr iniciē lietotājs, piemēram, cits pārlūks, tās var iniciēt arī darbinieki.

StimulusReflex sākotnēji tika radīts, iedvesmojoties no Phoenix LiveView (alternatīva SPA). StimulusReflex mērķis vienmēr ir bijis padarīt mūsdienīgu lietojumprogrammu veidošanu ar Rails par visproduktīvāko un patīkamāko pieejamo iespēju. Un, manuprāt, tieši to viņi šeit ir sasnieguši.

Kāpēc mums vajadzētu izmantot StimulusReflex?

Tas ir vienkārši - koncentrēties uz to, lai attīstītu produkts tā vietā, lai ieviestu konsekventas izmaiņas mūsdienu JavaScript. Arī, StimulusReflex lietojumprogrammās ir vienkāršas, kodolīgas un skaidras kods un bez problēmām integrēt ar Rubīns uz sliedēm. Tas ļauj maziem RoR teams veikt lielas lietas pat bez lielām zināšanām par React, Vue vai to modernajiem JavaScript risinājumiem.

Kā darbojas StimulusReflex?

Reflex

Reflex ir UI transakcijas atjauninājums, kas tiek veikts, izmantojot pastāvīgu atvērtu savienojumu ar serveri. StimulusReflex kartē pieprasījumus uz Reflex klase. Reflex klases ir lietotne/refleksi katalogs.

 klase PostReflex < ApplicationReflex
 end


Ja mēs izveidojam Reflex klasi ar ģeneratoru, mēs redzam, ka mūsu klase satur šo komentāru:

# Visi Reflex gadījumi ietver CableReady::Broadcaster un atklāj šādas īpašības:
  #
  # - connection - ActionCable savienojums,
  # - kanāls - ActionCable kanāls,
  # - request - ActionDispatch::Request proxy ligzdas savienojumam,
  # - sesija - pašreizējā apmeklētāja ActionDispatch::Session veikals,
  # - flash - pašreizējā pieprasījuma ActionDispatch::Flash::FlashHash,
  # - url - lapas URL, kas izraisīja refleksu,
  # - params - elementa tuvākās formas parametri (ja tādi ir),
  # - element - Hash līdzīgs objekts, kas atveido HTML elementu, kurš izraisīja refleksu,
  # - signed - izmanto parakstītu globālo ID, lai kartētu datu kopu, kas atribēta modelim, piemēram, element.signed[:foo],
  # - neparakstīts - izmanto neparakstītu globālo ID, lai kartētu datu kopu, kas attiecināta uz modeli, piemēram, element.unsigned[:foo],
  # - cable_ready - īpašs cable_ready, ko var pārraidīt pašreizējam apmeklētājam (iekavas nav vajadzīgas),
  # - reflex_id - UUIDv4, kas unikāli identificē katru Reflex.

Kā redzams, ir dažas īpašības, kuras var izmantot mūsu klasē. Visinteresantākā sākumā būs elements īpašība, kas satur visus Stimulus kontroliera DOM elementa atribūtus, kā arī citas īpašības, piemēram. tagName, pārbaudīts un vērtība.

StimulusReflex sniedz arī mums izsaukumu kopumu, kas ļauj mums kontrolēt refleksu procesus:

  • pirms_reflex
  • around_reflex
  • after_reflex

Kā redzat, nosaukumi ir ļoti līdzīgi aktīvā ieraksta atpakaļsaukumiem.

Refleksa deklarēšana HTML formātā ar datu atribūtu

Ātrākais veids, kā iespējot Reflex darbības, ir, izmantojot data-reflex atribūts. Sintakse atbilst Stimulus formātam: [DOM-event]->[ReflexClass]#[darbība]

"="">StimulusReflex dokumentācija. Paldies visiem StimulusReflex izstrādē iesaistītajiem cilvēkiem!

Šajā piemērā data-reflex atribūts norādīja uz PostRefex klases un palielinājums metode uz noklikšķiniet uz pasākums. Šeit mēs arī nodevām data-post-id ko vēlāk varam izmantot klasē Reflex, izmantojot element.dataset[:post_id].

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

post.increment! :likes
end
end

Morphs

Pēc noklusējuma, StimulusReflex atjaunina visu lapu (Page morph). Pēc kontroliera darbības atkārtotas apstrādes, skata šablona atveidošanas un neapstrādātā HTML nosūtīšanas uz pārlūkprogrammu StimulusReflex izmanto StimulusReflex. morphdom bibliotēku, lai veiktu mazāko DOM modifikāciju skaitu, kas nepieciešams lietotāja interfeisa atsvaidzināšanai tikai dažās milisekundēs.

StimulusReflex ir trīs atšķirīgi darbības režīmi:

Lapas Morph - veic pilnas lappuses atjaunināšanu,
Selektors Morph - aizstāj elementa saturu,
Nekas Morph - izpilda funkcijas, kas neatjaunina lapu (piemēram, izsauc darbinieku).

Lai mainītu mūsu PostReflex#increment metodi, mēs varam vienkārši izmantot morph atslēgvārdu un atlasiet mērķauditoriju daļai, kuru vēlamies atjaunināt.

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

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

Manas domas

Ar šo pavisam īso ievadu pietiek, lai sāktu savu ceļojumu ar reactive Rails, izmantojot StimulusReflex. Vai nav lieliski, ka var izveidot reactive SPA lietojumprogrammu, izmantojot tikai dažas Ruby rindas un bez JavaScript? Man visa šī HTML over-the-wire ideja ir aizraujoša, un nākotnē es noteikti iedziļināšos šajā tēmā. Pagaidām es jums ļoti iesaku StimulusReflex dokumentācija. Paldies visiem cilvēkiem, kas iesaistīti StimulusReflex izstrādē!

Lasīt vairāk:

Kāpēc jums (iespējams) vajadzētu izmantot Typescript

Kā nenogalināt projektu ar sliktu kodēšanas praksi?

Datu iegūšanas stratēģijas NextJS

Saistītie raksti

Ilustrācija viedtālruņa veselības aprūpes lietotnei ar sirds ikonu un pieaugošo veselības diagrammu, kas apzīmēta ar The Codest logotipu, kurš pārstāv digitālās veselības un HealthTech risinājumus.
Programmatūras izstrāde

Veselības aprūpes programmatūra: Mārketinga programmatūra: veidi, izmantošanas gadījumi

Šodien veselības aprūpes organizāciju rīcībā esošie rīki vairs neatgādina papīra diagrammas, kas tika izmantotas pirms vairākiem gadu desmitiem. veselības aprūpes programmatūra tagad atbalsta veselības aprūpes sistēmas, pacientu aprūpi un mūsdienīgu veselības aprūpes sniegšanu klīniskajās un...

TĀKĀDĒJAIS
Abstrakta ilustrācija ar lejupejošu joslu diagrammu ar augošu bultiņu un zelta monētu, kas simbolizē izmaksu efektivitāti vai ietaupījumus. Augšējā kreisajā stūrī redzams The Codest logotips ar saukli "In Code We Trust" uz gaiši pelēka fona.
Programmatūras izstrāde

Kā paplašināt izstrādātāju komandu, nezaudējot produkta kvalitāti

Palielināt izstrādātāju komandu? Uzziniet, kā augt, nezaudējot produkta kvalitāti. Šajā rokasgrāmatā aplūkotas pazīmes, kas liecina, ka ir pienācis laiks paplašināt komandu, komandas struktūra, pieņemšana darbā, vadība un rīki, kā arī tas, kā The Codest var...

TĀKĀDĒJAIS
Programmatūras izstrāde

Uz nākotni noturīgu tīmekļa lietojumprogrammu veidošana: The Codest ekspertu komandas ieskats

Uzziniet, kā The Codest izceļas mērogojamu, interaktīvu tīmekļa lietojumprogrammu izveidē, izmantojot modernākās tehnoloģijas un nodrošinot viengabalainu lietotāja pieredzi visās platformās. Uzziniet, kā mūsu zināšanas veicina digitālo transformāciju un biznesa...

TĀKĀDĒJAIS
Programmatūras izstrāde

Top 10 Latvijā bāzēti programmatūras izstrādes uzņēmumi

Mūsu jaunākajā rakstā uzziniet vairāk par Latvijas labākajiem programmatūras izstrādes uzņēmumiem un to inovatīvajiem risinājumiem. Uzziniet, kā šie tehnoloģiju līderi var palīdzēt uzlabot jūsu biznesu.

thecodest
Uzņēmumu un mērogošanas risinājumi

Java programmatūras izstrādes pamati: A Guide to Outsourcing Successfully

Izpētiet šo būtisko rokasgrāmatu par veiksmīgu outsourcing Java programmatūras izstrādi, lai uzlabotu efektivitāti, piekļūtu speciālajām zināšanām un sekmīgi īstenotu projektus ar The Codest.

thecodest

Abonējiet mūsu zināšanu bāzi un saņemiet jaunāko informāciju par IT nozares pieredzi.

    Par mums

    The Codest - starptautisks programmatūras izstrādes uzņēmums ar tehnoloģiju centriem Polijā.

    Apvienotā Karaliste - Galvenā mītne

    • 303B birojs, 182-184 High Street North E6 2JA
      Londona, Anglija

    Polija - Vietējie tehnoloģiju centri

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polija

    The Codest

    • Sākums
    • Par mums
    • Pakalpojumi
    • Case Studies
    • Zināt, kā
    • Karjera
    • Vārdnīca

    Pakalpojumi

    • Tā Konsultatīvais dienests
    • Programmatūras izstrāde
    • Backend izstrāde
    • Frontend izveide
    • Staff Augmentation
    • Backend izstrādātāji
    • Mākoņa inženieri
    • Datu inženieri
    • Citi
    • QA inženieri

    Resursi

    • Fakti un mīti par sadarbību ar ārējo programmatūras izstrādes partneri
    • No ASV uz Eiropu: Kāpēc Amerikas jaunuzņēmumi nolemj pārcelties uz Eiropu?
    • Tehnoloģiju ārzonas attīstības centru salīdzinājums: Tech Offshore Eiropa (Polija), ASEAN (Filipīnas), Eirāzija (Turcija)
    • Kādi ir galvenie CTO un CIO izaicinājumi?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autortiesības © 2026 The Codest. Visas tiesības aizsargātas.

    lvLatvian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lt_LTLithuanian is_ISIcelandic lvLatvian