Увод у архитектонски образац Флук

Дисцовер Фунцтионал ЈаваСцрипт је проглашен једном од најбољих књига о функционалном програмирању од стране БоокАутхорити !

Флук је архитектонски образац који је Фацебоок предложио за изградњу СПА. Предлаже да се апликација подели на следеће делове:

  • Продавнице
  • Диспечер
  • Виевс
  • Ацтион / Ацтион Цреаторс

Сторе

Продавница управља државом. Може да чува и стање домена и стање корисничког интерфејса.

Трговина и држава су различити концепти. Држава је вредност података. Сторе је објект понашања који управља стањем путем метода. У случају управљања књигама: листа књига је држава, а БоокСторе управља том листом.

Продавница управља са више објеката. То је једини извор истине у погледу тих специфичних предмета. У апликацији може бити много продавница. На пример: БоокСторе, АутхорСторе, УсерСторе.

У продавници не постоје методе постављача. Можете да захтевате промену стања само прослеђивањем радње диспечеру.

Продавница ослушкује све радње и одлучује о томе ко ће од њих поступити. То обично значи switchизјаву. Једном када продавница изврши промене стања, емитоваће догађај промене. Продавница је емитер догађаја.

Продавнице друге продавнице не узимају као зависност.

Диспечер

Диспечер је један објект који емитује акције / догађаје у све регистроване продавнице. Продавнице се морају регистровати за догађаје када апликација започне.

Када акција уђе, она ће је проследити свим регистрованим продавницама.

Поглед

Поглед је компонента корисничког интерфејса. Одговорна је за приказивање корисничког интерфејса и за руковање корисничком интеракцијом. Погледи су у структури дрвета.

Прикази слушају промене продавнице и поново се приказују.

Погледи се могу даље поделити у приказима Презентације и Контејнера.

Презентацијски прикази се не повезују са диспечером или продавницама. Комуницирају само путем сопствених својстава.

Прикази контејнера повезани су са продавницама и диспечером. Слушају догађаје из продавница и пружају податке за презентацијске компоненте. Они добијају нове податке помоћу метода јавног дохвата у продавницама, а затим их прослеђују низ дрво приказа.

Контејнер приказује радње слања као одговор на корисничку итерацију.

Акције

Акција је обичан објекат који садржи све информације потребне за извршење те акције.

Акције имају typeсвојство које идентификује тип радње.

Како се објекти акције крећу по апликацији, предлажем да их учините непроменљивим.

Акције могу доћи са различитих места. Они могу доћи из приказа као резултат интеракције корисника. Могу доћи са других места попут иницијализационог кода, где се подаци могу узимати са веб АПИ-ја и покрећу акције за ажурирање погледа. Радња може доћи од тајмера који захтева ажурирања екрана.

Ацтион Цреаторс

Пракса је да се инкапсулира код, стварајући акције у функцијама. Те функције које креирају и отпремају акције називају се творци акција.

Веб АПИ позиви

Када обављате позиве путем веб АПИ-ја ради ажурирања корисничког интерфејса, након позива веб АПИ-ја следи акција за ажурирање продавнице. Када се продавница ажурира, емитоваће догађај промене и као резултат тога приказ који слуша тај догађај ће се поново приказати.

Позиви веб АПИ-ја се врше у креаторима радњи. Можемо извући код који врши АПИ позив у функцијама Веб АПИ Утилс.

Једносмерни ток података

Ажурирање погледа тече у једном смеру:

Прикази не мењају податке које су добили. Они ослушкују промене ових података, креирају акције са новим вредностима, али не ажурирају податке.

Продавнице, прикази и било која друга радња не могу директно променити стање у (осталим) продавницама. Морају послати акцију преко диспечера

Ток података је краћи у читању у складишту него у уписима. Проток података у записима у складишту разликује се између асинхроних и синхроних радњи.

Сторе Реадс

Складиштење писања у синхроним акцијама

Чување писања у асинхроним акцијама

Прос

Флук архитектура је боља у апликацији где се погледи не мапирају директно у продавнице домена. Да поставимо на другачији начин, када прикази могу да креирају акције које ће ажурирати многе продавнице, а продавнице могу да покрену промене које ће ажурирати многе приказе.

Радње се могу наставити, а затим поновити.

Цонс

Флук може додати непотребну сложеност апликацији где се сваки приказ пресликава у једну продавницу. У овој врсти апликације довољно је раздвајање погледа и продавнице.

Погледајте на пример Како створити трослојну апликацију помоћу Реацт-а.

Закључак

Продавнице управљају државом. Они мењају стање само ослушкујући акције. Продавнице обавештавају погледе за ажурирање.

Прикази генеришу кориснички интерфејс и управљају интеракцијом корисника. Прикази контејнера ослушкују промене у продавници.

Диспечер емитује акције свим регистрованим продавницама.

Акције су обични објекти.

Дисцовер Фунцтионал ЈаваСцрипт је проглашен једним однајбоље нове књиге о функционалном програмирању од БоокАутхорити !

За више информација о примени техника функционалног програмирања у Реацту погледајте Фунцтионал Реацт .

Научите функционални Реацт , на начин заснован на пројекту, уз функционалну архитектуру са Реацт-ом и Редук-ом .

Пратите на Твиттер-у