Component-based Front-End architecture

26
Component-based Front-End Architecture Artyom Trityak

description

Architecture patterns for front-end apps

Transcript of Component-based Front-End architecture

Page 1: Component-based Front-End architecture

Component-based Front-End Architecture

Artyom Trityak

Page 2: Component-based Front-End architecture

Real app?

Page 3: Component-based Front-End architecture

Done!

Page 4: Component-based Front-End architecture

Real app

Page 5: Component-based Front-End architecture

Real app

Page 6: Component-based Front-End architecture
Page 7: Component-based Front-End architecture

Scalability? Oops…

Page 8: Component-based Front-End architecture

No panic!

Page 9: Component-based Front-End architecture

Hierarchical MVC

Page 10: Component-based Front-End architecture

Component Folder

• Data Layer (models, collections, services)

• Views (Views, Directives)

• Public API (Controller)*

Component structure

*At AngularJS app Services provides component Public API

Page 11: Component-based Front-End architecture

• Views, Models creation

• Public API, Listening events

• Configuring initial state of component

• Business logic

Controller

Page 12: Component-based Front-End architecture

• Backbone.Controller

• Marionette.Controller

• Angular.js Controller

Controller implementation

Page 13: Component-based Front-End architecture

• Fetching / saving data (ajax, jsonp etc)

• Storing data and state

• Data operations (sorting, filtering, processing)

Data Layer

Page 14: Component-based Front-End architecture

• Backbone.Model

• Backbone.Collection

• Angular.js Service

Data Layer examples

Page 15: Component-based Front-End architecture

• Rendering templates

• DOM events binding (clicks, hovers etc)

• Data Layer DOM binding (1-2 way)

• No logic. NO LOGIC =>

• Triggering actions events to controller

Views

Page 16: Component-based Front-End architecture

• Backbone.View

• Angular.js Directive

Views examples

Page 17: Component-based Front-End architecture

What next? Components communication

Publish user:get

Listen user :get

Component Users

Component CV

Server

Get CV for User X

Page 18: Component-based Front-End architecture

Deferred / Promises

jQuery.deferred Q

Page 19: Component-based Front-End architecture

Deferred / Promises

Page 20: Component-based Front-End architecture

Deferred / PromisesApp Users

App

Server

get data

Page 21: Component-based Front-End architecture

Components communicationPublish user:get

Listen user :get

Component Users

Component CV

Server

Get CV for User X

deferred

resolve…

Page 22: Component-based Front-End architecture

Deferred / Promises

Page 23: Component-based Front-End architecture

Deferred / Promises

Page 24: Component-based Front-End architecture

Global events: namingProject prefix:Module name:Event name

!

EC:USERS:GET EC:INVENTORY:RESET

EC:INVENTORY:LOADED

Page 25: Component-based Front-End architecture

ScreensUsers

Zoom

Steps

Steps Screen

User details Screen

• Initialize components • Define screen routes • Define screen logic

EVENTS

Menu

Page 26: Component-based Front-End architecture