рдЗрд╕ рдЕрдиреБрдЪреНрдЫреЗрдж рдореЗрдВ, рд╣рдо рдПрдорд╡реАрдкреА, рдПрдорд╡реАрд╡реАрдПрдо, рдПрдорд╡реАрдЖрдИ, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗред рдЖрдЬ рд╣рдо рдХреЗрд╡рд▓ рдкреНрд░рд╕реНрддреБрддрд┐-рд╕реНрддрд░реАрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪреАрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рджрд╕рд┐рдпреЛрдВ рдпрд╛ рд╕реИрдХрдбрд╝реЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрд░рд╛рдо рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ? рдПрдХ рдЖрд╡реЗрджрди рдЬреЛ рдХрд┐ рд╣рдордиреЗ рдХрд┐рддрдирд╛ рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ:
- рдХрдордЬреЛрд░ рдХреЛрдб рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреАред рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛрдбред рдХреЙрдкреА-рдкрд╛рд╕реНрдЯ рдХреЗ рдмрд┐рдирд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рди рдпреЛрдЧреНрдп рдЪреАрдЬреЗрдВ рдЖрд╕рд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
- рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдЖрд╕рд╛рдиреАред рдХрд┐рд╕реА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╕реНрдерд┐рд░рддрд╛ред рдлреАрдЪрд░ рдЯреЙрдЧрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдирдП рдХреЛрдб рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЯреНрд░рдВрдХ-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред
- рдХреЛрдб рд╕реНрд╡рд╛рдорд┐рддреНрд╡ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдореА рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдЪрд░рдг рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдФрд░ рдпрд╣рд╛рдВ рди рдХреЗрд╡рд▓ рдмрдбрд╝реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЧреНрд░реЗрдбрд▓ / рдкреЙрдбреНрд╕ рдореЙрдбреНрдпреВрд▓, рдмрд▓реНрдХрд┐ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рд▓рд┐рдХ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЕрдВрдЧ

. - (MV*) Presenter/ViewModel/Interactor/- . , - - . , , , // . , -, .
, . .

- . - .
- . .
- . .
- . , , .
- UI. .
- Unidirectional data flow . .
- . feature toggles.
, , , . , - .

- (DomainObject).
- (UI State).
- .
- - ( , ), (Action) , . UI State, (Action) , Service. Service (. 1).
, , (Actions) (Service). Service (DomainObjects) . Service - : UserService, PaymentsService, CartService, : ProductDetailsService, OrderService.

, , MVP/MVC/MVVM/MVI , ().
тАКтАФтАК , , , , .
:
- MiddlewareтАКтАФтАК (Actions). , Middleware . .
- ReducerтАКтАФтАК Middleware. .

, Middleware Reducer , Middleware Reducer.
: Flux, Redux, MVI
Server Drive UI
, (DomainObject), . Play Store/App Store. , !

рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░, рд╕реНрдХреНрд░реАрди рдкрд░ рд╕реНрдерд┐рддрд┐, рд╕рдВрд╕реНрдХрд░рдг, рдФрд░ рдСрдкрд░реЗрд╢рди рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
{
"components": [
{
"type": "toolbar",
"version": 3,
"position": "header",
"data": {
"title": "Profile",
"showUpArrow": true
}
},
{
"type": "user_info",
"version": 1,
"position": "header",
"data": {
"id": 1234,
"first_name": "Alexey",
"last_name": "Glukharev"
}
},
{
"type": "user_photo",
"position": "header",
"version": 2,
"data": {
"user_photo": "https://image_url.png"
}
},
{
"type": "menu_item",
"version": 1,
"position": "content",
"data": {
"text": "open user details",
"deeplink": "app://user/detail/1234"
}
},
{
"type": "menu_item",
"version": 1,
"position": "content",
"data": {
"text": "contact us",
"deeplink": "app://contact_us"
}
},
{
"type": "button",
"version": 1,
"position": "bottom",
"data": {
"text": "log out",
"action": "log_out"
}
}
]
}
рдкреНрд░рд╢рди?
рдореИрдВрдиреЗ рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛, рдФрд░ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдЦреБрд▓рд╛ рд╣реВрдВред