24
Component-based Front-End Architecture Artyom Trityak

WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Embed Size (px)

DESCRIPTION

Архитектура приложений на основе компонентов Артем Тритяк Как создать большое приложение и не умереть? Как сделать приложение расширяемым и легко поддерживаемым? Как покрыть его тестами?

Citation preview

Page 1: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Component-based Front-End Architecture

Artyom Trityak

Page 2: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Real app?

Page 3: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Done!

Page 4: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Real app

Page 5: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Real app

Page 6: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк
Page 7: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Scalability? Oops…

Page 8: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

No panic!

Page 9: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Component-based app

Page 10: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Component Folder

• Data Layer (models, collections, services)

• Views (Views, Directives)

• Public API (Controller)

Component structure

Page 11: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

• Views, Models creation

• Listening public and local events

• Configuring component

• Business logic

• Public API

Component: Controller

Page 12: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

• Backbone.Controller

• Marionette.Controller

• Chaplin Controller

• Angular.js Controller

Controller implementation

Page 13: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

• Fetching / saving data (ajax, jsonp etc)

• Storing data and state (data object)

• Data operations (sorting, filtering, processing)

• Data logic

Component: Data Layer

Page 14: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

• Backbone.Model

• Backbone.Collection

• Angular.js Service

Data Layer implementation

Page 15: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

• Rendering templates

• DOM events binding (clicks, hovers etc)

• Data Layer DOM binding (1-2 way)

• Triggering actions events to controller

• No logic. NO LOGIC.

Component: Views

Page 16: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

• Backbone.View

• Angular.js Directive

Views implementation

Page 17: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

What next? Components communication

Publish user:get

Listen user :get

Component Users

Component CV

Server

Get CV for User X

Page 18: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Promises

jQuery.deferred Q promise

Page 19: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Promises

Page 20: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Promises

Page 21: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

What next? Components communication

Publish user:get

Listen user :get

Component Users

Component CV

Server

Get CV for User X

promise

resolve

Page 22: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

Global events: namingProject prefix:Module name:Event name

!

EC:USERS:GET EC:INVENTORY:RESET

EC:INVENTORY:LOADED

Page 23: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк

ScreensUsers

Zoom

Steps

Steps Screen

User details Screen

• Initialize components • Define screen routes • Define screen logic

EVENTS

Page 24: WebCamp: Developer Day: Архитектура приложений на основе компонентов - Артем Тритяк