рдмрдбрд╝реЗ рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рдЗрд╕ рдЕрдиреБрдЪреНрдЫреЗрдж рдореЗрдВ, рд╣рдо рдПрдорд╡реАрдкреА, рдПрдорд╡реАрд╡реАрдПрдо, рдПрдорд╡реАрдЖрдИ, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗред рдЖрдЬ рд╣рдо рдХреЗрд╡рд▓ рдкреНрд░рд╕реНрддреБрддрд┐-рд╕реНрддрд░реАрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪреАрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рджрд╕рд┐рдпреЛрдВ рдпрд╛ рд╕реИрдХрдбрд╝реЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрд░рд╛рдо рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ? рдПрдХ рдЖрд╡реЗрджрди рдЬреЛ рдХрд┐ рд╣рдордиреЗ рдХрд┐рддрдирд╛ рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред


рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ:


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

рдЕрдВрдЧ


рдЫрд╡рд┐


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


, . .


рдЫрд╡рд┐



  1. . - .
  2. . .
  3. . .
  4. . , , .
  5. UI. .
  6. Unidirectional data flow . .
  7. . feature toggles.
    , , , . , - .


рдЫрд╡рд┐


  1. (DomainObject).
  2. (UI State).
  3. .
  4. - ( , ), (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"
      }
    }
  ]
}

рдкреНрд░рд╢рди?


рдореИрдВрдиреЗ рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛, рдФрд░ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдЦреБрд▓рд╛ рд╣реВрдВред


All Articles