17 komentářů k článku Lumines: Vytváříme hru v React.js 1:

  1. petrbolf

    Flux versusu Redux
    Díky za skvělý článek.

    Flux jsem se snažil pochopit a dřív se mi podařilo do něj proniknout tak i v Este.js začal Dan používat Redux. Jak funguje Redux docela chápu, s Fluxem nemám praktické zkušenosti.

    Je Redux řešením třeba na ty kruhové závislosti mezi story? Nejspíš ano, protože Redux má pouze jeden store. Zjednodušilo by použití Reduxu celý příklad? Mohlo by použití Reduxu naopak přinést zase jiné komplikace?

    Chápu Redux jako určitou evoluci ve vývoji Fluxu.

    1. HonzaMarek

      Re: Flux versusu Redux
      V Reduxu máš jeden store a pak si napíšeš reducer funkci, která přečte data a upraví data pomocí delegace na další reducery ve správném pořadí. Takže ano, stále platí, že Redux je univerzální spása pro všechny React aplikace :)

      Pro více info:

    2. Tobiáš PotočekAutor příspěvku

      Re: Flux versusu Redux
      Myslím, že to tam sám v článku někde zmiňuji, že sloučení všech storů do jednoho by byla ta nejjednodušší a nejčistší cesta. Já se ale spíš z akademických důvodů rozhodl vyzkoušet tento „vanilla“ přístup. A kromě toho v době, kdy tento kód vznikal, tak v Este.js ještě po reduxu nebylo ani památky :)

      1. HonzaMarek

        Re: Flux versusu Redux
        Redux není fluxovej framework, ale (podle mě lepší a jednodušší na použití) alternativa ke fluxu. Sám ten „framework“ je tak malej, že to neni o nic míň „vanilla“ než použití react fluxu.

  2. Ondřej Žára

    Kruhová závislost
    Rád bych podotkl, že jak ES6 moduly, tak CommonJS require jsou z definice připraveny na kruhové závislosti. Není na tom nic špatného.

    Jediný problém kruhové závislosti nastává u CommonJS require, pokud některý modul přímo přiřazuje do module.exports. Proto je tato technika doporučována méně, než (pouhá) změna vlastností objektu exports.

    1. Tobiáš PotočekAutor příspěvku

      Re: Kruhová závislost
      Vida. Já měl v sobě tu představu acyklického stromu závislostí natolik zakořeněnou, že mě ani nenapadlo to googlit. :) Děkuji za upřesnění. Doplním to do článku.

      1. steida

        Re: Kruhová závislost
        Ad „Není na tom nic špatného.“

        Dovolím si upřesnit. Není na tom nic špatného, dokud jsou závislosti bez stavové, což by měli být, ale často nejsou. Jakmile modul drží stav, je kruhová závyslost skluzavkou do pekla.

        1. Tobiáš PotočekAutor příspěvku

          Re: Kruhová závislost
          Co se přesně myslí tou bez stavovostí? Ty dva story reprezentují stav konkrétních herních komponent, takže tam je stavu až až.

          Na této situaci je zajímavé to, že ona cyklická závislost vzniká už na úrovni herní mechaniky. Vše ostatní je jen záležitost konkrétní implementace. V případě Fluxu a zvoleného rozdělení do storů se to pak projevuje kruhovou závislostí mezi story, kterou je potřeba nějak vyřešit (já použil pool instancí, nicméně jsem si zjevně mohl vystačit s klasickými importy).

          Jo a dík za pochvalu :)

  3. steida

    Jinak článek je suprovej, a díky za odkaz. Jak si psal, Este mělo vlastní vanilla funcionální Flux a měl jsem ho rád, ale nemělo smysl jít proti Reduxu, který má skvělou dokumentaci, pokud by někoho zajímalo, proč i Este přeslo na Redux.

  4. Oldis

    Jo hra super, chtel sem se podivat jak je to udelany a zkusit si ekosystem/devstack, stahnul sem si, podle navodu, nodejs a dalsi a prd, jak kdyby mi to nebralo babel, kterej se podle logu stahne, stejnej a nebo podobnej problem mam s este. (windows)

  5. Jarda

    Můžu se zeptat jak funguje ten redux s immutable.js? Pokud tomu dobře rozumím, tak ve store je stav aplikace uložený jako jeden velký strom. Pokud se, ale na konci stromu změní jedna malá hodnota, tak protože je to immutable, je nutné přepsat celý ten strom v paměti, nemůže se měnit, je immutable. No a pak react.js vidí velkou změnu a musí překreslit úplně všechno. A pak to musí být strašně pomalé, ne? Když se po každé drobné změně musí překreslit celý strom.
    Co mi uniká?

    1. HonzaMarek

      Re:
      V immutable.js se recyklují toho stromu, které se nezměnily. Pokud pak vybírám v reduxí connect funkci menší kousky stavu a ne celý state, tak se (pokud nedojde ke změně) vyberou pořád stejné objekty a nic potřeba překreslit není.

      1. Jarda

        Re:
        Aha, takže to je to co mi nedošlo. Když mám immutable.js tak ten strom není immutable, ale mění se. Takže je vlastně mutable.

        1. HonzaMarek

          Re:
          Není mutable. Vždycky se vytvoří nová instance stromu, ale na nezměněné části se použije reference na „starý“ podobjekt.

        2. Tobiáš PotočekAutor příspěvku

          Re:
          Tady jsem namátkou našel obrázek, který by to mohl pomoci objasnit. A toto video shrnuje cely immutable koncept v Reactu, pokud vládnete angličtinou.

          1. Jarda

            Re:
            Aha, teď už tomu rozumím, ten obrázek mi pomohl hodně.

            Myslel jsem, že se použije i starý kořen, protože ten se nezmění, ale on se změní, protože se změní i jeho děti. A jenom se potom znovupoužijí ostatní děti toho kořene.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=16464