(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': data().getTime(),įvykis:'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" - greitas būdas kurti reactive programas - The Codest
The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2019-04-24
Programinės įrangos kūrimas

"StimulusReflex" - greitas būdas kurti reactive programas

The Codest

Pawel Muszynski

Software Engineer

Kas yra "StimulusReflex"? Šiuo metu gana populiarus HTML per laidą metodas paskatino mus kurti karkasus ir bibliotekas, kurios siunčia HTML per laidą, užuot naudojusios JSON. StimulusReflex yra viena iš jų.

Tai naujas būdas sukurti reactive vartotojo sąsają Ruby on Rails.
"StimulusReflex" išplečia Bėgiai ir "Stimulus" fiksuojant naudotojų sąveikas ir perduodant jas "Rails" per realaus laiko žiniatinklio lizdus. Puslapiai greitai atvaizduojami iš naujo, o visi atnaujinimai siunčiami klientui per "CableReady".

"CableReady" leidžia kurti atnaujinimus realiuoju laiku, sukeliant kliento pusės DOM pakeitimus, įvykius ir pranešimus per Veiksmo kabelis. Skirtingai nei "Ajax", operacijas ne visada inicijuoja vartotojas, kita naršyklė, pavyzdžiui, jas gali inicijuoti ir darbuotojai.

StimulusReflex iš pradžių įkvėpė "Phoenix LiveView" (SPA alternatyva). "StimulusReflex" tikslas visada buvo padaryti šiuolaikinių programų kūrimą naudojant "Rails" produktyviausiu ir maloniausiu būdu. Mano nuomone, būtent tai jiems pavyko pasiekti.

Kodėl turėtume naudoti "StimulusReflex"?

Tai paprasta - sutelkti dėmesį į produktas vietoj to, kad nuosekliai keistų šiuolaikines JavaScript. Taip pat, StimulusReflex programos yra paprastos, glaustos ir aiškios. kodas ir sklandžiai integruoti su Ruby ant bėgių. Tai leidžia mažiems RoR teams daryti didelius dalykus net ir neturint puikių žinių apie React, Vue arba jų modernius JavaScript sprendimus.

Kaip veikia "StimulusReflex"?

Reflex

Reflex tai transakcinis vartotojo sąsajos atnaujinimas, atliekamas per nuolatinį atvirą ryšį su serveriu. "StimulusReflex" atvaizduoja užklausas į Reflex klasė. Reflex klasės yra programa/refleksai katalogas.

 klasė PostReflex < ApplicationReflex
 end


Jei sukursime "Reflex" klasę su generatoriumi, pamatysime, kad mūsų klasėje yra šis komentaras:

# Visi "Reflex" egzemplioriai apima "CableReady::Broadcaster" ir atskleidžia šias savybes:
  #
  # - ryšys - ActionCable ryšys,
  # - kanalas - "ActionCable" kanalas,
  # - request - "ActionDispatch::Request" įgaliotasis agentas, skirtas lizdo ryšiui,
  # - session - ActionDispatch::Session saugykla, skirta dabartiniam lankytojui,
  # - flash - ActionDispatch::Flash::FlashHash, skirtas dabartinei užklausai,
  # - url - puslapio, kuris sukėlė refleksą, URL,
  # - params - elemento artimiausios formos parametrai (jei yra),
  # - elementas - į "Hash" panašus objektas, žymintis HTML elementą, kuris sukėlė refleksą,
  # - signed - naudoja pasirašytąjį pasaulinį ID, kad atvaizduotų duomenų rinkinį, priskirtą modeliui, pvz., element.signed[:foo],
  # - nepasirašytasis - naudoja nepasirašytąjį pasaulinį ID, kad atvaizduotų modeliui priskirtą duomenų rinkinį, pvz., element.unsigned[:foo],
  # - cable_ready - specialus cable_ready, kuris gali būti transliuojamas dabartiniam lankytojui (skliaustų nereikia),
  # - reflex_id - UUIDv4, kuris unikaliai identifikuoja kiekvieną Reflex.

Kaip matome, yra keletas savybių, kurias galima naudoti mūsų klasėje. Įdomiausia pradžioje bus elementas savybė, kurioje yra visi "Stimulus" valdiklio DOM elemento atributai ir kitos savybės, pvz. tagName, patikrinta ir vertė.

StimulusReflex taip pat pateikia mus grįžtamųjų skambučių rinkinį, leidžiantį valdyti reflekso procesus:

  • before_reflex
  • aplink_refleksas
  • after_reflex

Kaip matote, pavadinimai labai panašūs į "Active Record Callbacks".

"Reflex" deklaravimas HTML su duomenų atributu

Greičiausias būdas įjungti "Reflex" veiksmus - naudoti duomenys-refleksas atributas. Sintaksė atitinka stimulo formatą: [DOM-įvykis]->[ReflexClass]#[veiksmas]

"="">StimulusReflex dokumentacija. Dėkojame visiems žmonėms, dalyvavusiems kuriant "StimulusReflex"!

Šiame pavyzdyje duomenys-refleksas atributas nurodė PostRefex klasė ir padidinti metodą, taikomą spustelėkite renginys. Čia mes taip pat perdavėme data-post-id kurį vėliau galėsime naudoti "Reflex" klasėje per element.dataset[:post_id].

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

post.increment! :likes
end
end

Morfai

Pagal numatytuosius nustatymus, StimulusReflex atnaujina visą puslapį (Puslapis morf). Iš naujo apdorojusi valdiklio veiksmą, atvaizdavimo šabloną ir išsiuntusi neapdorotą HTML į naršyklę, "StimulusReflex" naudoja morfomas biblioteką, kad per kelias milisekundes atliktumėte mažiausiai DOM pakeitimų, reikalingų vartotojo sąsajai atnaujinti.

StimulusReflex turi tris skirtingus veikimo režimus:

Puslapio morfija - atliekamas viso puslapio atnaujinimas,
Pasirinkimo morfija - pakeičia elemento turinį,
Nieko Morph - vykdo funkcijas, kurios neatnaujina puslapio (pvz., iškviečia darbuotoją).

Pakeisti mūsų "PostReflex#increment metodą, galime tiesiog naudoti morph raktinį žodį ir nukreipkite į dalinį, kurį norime atnaujinti.

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

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

Mano mintys

Šios gana trumpos įžangos pakanka, kad pradėtumėte savo kelionę su reactive Rails naudodami StimulusReflex. Argi ne puiku, kad galite sukurti reactive SPA programą naudodami vos kelias "Ruby" eilutes ir be JavaScript? Man visa ši HTML per laidą idėja yra įdomi ir ateityje tikrai gilinsiuosi į šią temą. Kol kas labai rekomenduoju jums StimulusReflex dokumentacija. Dėkojame visiems žmonėms, dalyvavusiems kuriant "StimulusReflex"!

Skaityti daugiau:

Kodėl turėtumėte (tikriausiai) naudoti Typescript

Kaip nesunaikinti projekto dėl blogos kodavimo praktikos?

Duomenų gavimo strategijos "NextJS

Susiję straipsniai

Išmaniojo telefono sveikatos priežiūros programėlės su širdies piktograma ir kylančia sveikatos diagrama, pažymėtos The Codest logotipu, iliustracija, vaizduojanti skaitmeninės sveikatos ir sveikatos technologijų sprendimus.
Programinės įrangos kūrimas

Sveikatos priežiūros programinė įranga: Sveikatos priežiūros paslaugos: tipai, naudojimo atvejai

Įrankiai, kuriais šiandien naudojasi sveikatos priežiūros organizacijos, nė iš tolo neprimena prieš kelis dešimtmečius naudotų popierinių kortelių. sveikatos priežiūros programinė įranga dabar padeda sveikatos sistemoms, pacientų priežiūrai ir šiuolaikiniam sveikatos priežiūros paslaugų teikimui klinikinėse ir...

GERIAUSIAS
Abstrakti mažėjančios stulpelinės diagramos su kylančia rodykle ir auksine moneta, simbolizuojančia ekonomiškumą arba taupymą, iliustracija. Viršutiniame kairiajame viršutiniame kampe pavaizduotas The Codest logotipas ir šūkis "In Code We Trust" šviesiai pilkame fone.
Programinės įrangos kūrimas

Kaip padidinti savo Dev komandą neprarandant produkto kokybės

Didinate savo kūrėjų komandą? Sužinokite, kaip augti neprarandant produkto kokybės. Šiame vadove aptariami ženklai, kad atėjo laikas didinti komandą, komandos struktūra, įdarbinimas, vadovavimas ir įrankiai - ir kaip The Codest gali...

GERIAUSIAS
Programinės įrangos kūrimas

Sukurkite ateičiai atsparias žiniatinklio programas: The Codest ekspertų komandos įžvalgos

Sužinokite, kaip The Codest puikiai kuria keičiamo dydžio interaktyvias žiniatinklio programas, naudodama pažangiausias technologijas ir užtikrindama vientisą naudotojų patirtį visose platformose. Sužinokite, kaip mūsų patirtis skatina skaitmeninę transformaciją ir verslo...

GERIAUSIAS
Programinės įrangos kūrimas

10 geriausių Latvijoje įsikūrusių programinės įrangos kūrimo įmonių

Naujausiame mūsų straipsnyje sužinokite apie geriausias Latvijos programinės įrangos kūrimo įmones ir jų inovatyvius sprendimus. Sužinokite, kaip šie technologijų lyderiai gali padėti pakelti jūsų verslo lygį.

thecodest
Įmonių ir didinimo sprendimai

"Java" programinės įrangos kūrimo pagrindai: A Guide to outsourcing Outsourcing Successfully

Išnagrinėkite šį esminį vadovą, kaip sėkmingai outsourcing "Java" programinę įrangą kurti, kad padidintumėte efektyvumą, įgytumėte patirties ir sėkmingai įgyvendintumėte projektus su The Codest.

thecodest

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

    The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

    Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

    Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

    lt_LTLithuanian
    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 lvLatvian is_ISIcelandic lt_LTLithuanian