must watch https://www.youtube.com/watch?v=-RaFcpNiYCo
dival jsem se na zacatek ale dlouho jsem nevydrzel; Stuart miva dlouhe prednasky o malych knihovnach
mluvi tam o necem jinem nez component pripadne tools.namespace?
o jejich kombinaci :simple_smile:
jak je používat dohromady, aby byla lepší dev experience
component
knihovna je fajn, dava to smysl, bohuzel prepsat existujici kod do tohoto modelu je dost pruda, clovek musi propagovat kontext parametr i do tech nejmensich funkci, pokud si chteji sahnout na ten stav
a kdyz ma clovek knihovny, ktere ho nerespektuji, tak je to taky tezky
kdykoliv nekdo udela (def my-state)
tak je to game over
což by slušný knihovny dělat neměly
pak je to framework :simple_smile:
no, je to tezky, protoze (def state) je defaultni vec, ktera kazdeho napadne
bylo by fajn mit moznost “instancovat” cele namespaces na urovni jazyka, takze clovek takto napsany kod porad muze "rozinstancovat"
ja na to narazil v re-frame, bohuzel autori re-frame tomu neprikladaji moc velkou prioritu
tak jsem to forknul https://github.com/binaryage/pure-frame
to jen potvrzuje to, co si o re-frame myslím :simple_smile:
ale neni v mych silach ten fork dlouhodobe udrzovat
a clovek by rekl, ze om, datomic & spol uz vsechny nalezite poucil a stav komponent se do promennych proste neuklada
je pravda, ze namapovani namespacu na mutabilni java(scriptove) objekty je dost nestastne
oni mají vlastní představu jak to dělat líp...
podobny problem jsem uz 2x resil; component je pekny, ale nevyhoda je, ze na komponentach pouziva protokoly
a nevyhoda protokolu je, ze nejdou komponovat a jsou vlastne take globalni stav
protokol je definovany tride, ktera je soucasti stavu namespace
(podobny problem je pouziti multimetod v om/nextu)
@skardan: takze jak bys to resil? jako obycejne mapy, ktere maji domluvene klice?
@darwin mapa, ktera nesla jak stav tak middleware, ktery nad ni operoval
ma to velke vyhody (napr pro ladeni, testovani atd)
tak nevyhody (domluvene klice)
@darwin: ten game over jsi myslel pro cokoli co má (def state) nebo pro použití componemt?
pro pouziti component
@darwin vlastne tou mapou, klicemi a funkcemi jsme nahradili namespacy a multimetody/protokoly (udelali je spravne - tj immutable a composable)
@pepe ve vlastni aplikaci to klidne delat muzes (protoze vis, ze ta vec bude singleton), ale jako autor knihovny omezis pouziti v pripadech kdy ta vec singleton neni
napriklad v re-frame by se hodilo mit vice re-frame instanci v jednom javscript contextu
@darwin zkousel jsem to napr na om/next a tam tenhle pristup zapadnul jako ruka do rukavu (lepsi nez multimetody, ktere pouziva v prikladech david nolen)
@skardan: chapu, ze mapama muzes celou vec nahradit - problem pak ale muze byt reloadovatelnost kodu pro interaktvni development, protoze vsechny funkce pak zapeces do map, ktere se stanou stavem tve aplikace
@darwin: pro vyvoj / neprodukcni prostredi tam muzes davat #'var
@darwin: já si to právě pamatuji, jak si to řešil ma GH a i když chápu (zvláště pak v kontextu věci jak je plastic) to nutkání, nějak mi stále nedochází jaké výhody by to pro mě jako tvůrce malých až středních (jednotky KLoc) app mělo.
Na které podle mě reframe míří 😉. A nechci to nijak bagatelizovat, tvůj názor má u mne respekt. Jen víš jak: není zkušenosti bez zkušenosti.
@pepe: jeden relevantni usecase je testovani, treba devcards, kde chces vytvorit spoustu instanci svoji aplikace v ruznych stavech a videt je vsechny naraz
@darwin to je úplná pravda, o tom se ostatně sem tam v #C073DKH9P mluví.
muzes to obejit vytvarenim iframu, ale to neni to prave orechove
jj, díky zase mám o čem přemýšlet 😉
kdyz budes psat knihovnu, tak nech uzivatele vytvaret a predavat jeji stav (kontext), a pak nad timto api, muzes udelat old-school zjednodusene rozhrani, ktere vytvori jeden globalni stav a preda ho do vsech techto funkci
99% lidi puzijou zjednodusene api, a to 1% si muze pouzit to slozitejsi primo, nebo si ho zabalit do component, nebo do cehokoliv jineho
rozhodne nenutit lidi pouzivat component, rika to i Sierra v jedne z jeho prednasek (to by bylo zase zbytecne omezeni)
@darwin: To 99/1% mi pripomnelo tenhle clanek (byt z F# sveta): http://tomasp.net/blog/2015/library-layers/index.html
Pripadne tohle http://blog.ploeh.dk/2016/03/18/functional-architecture-is-ports-and-adapters/