Binary Studio Academy PRO. JS course. Lecture 1. UI Architecture.

41
JS & UI Applications Design Patterns Binary Academy 2014 Semenistyi Mykyta

Transcript of Binary Studio Academy PRO. JS course. Lecture 1. UI Architecture.

Page 1: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

JS & UI Applications Design Patterns

Binary Academy 2014 Semenistyi Mykyta

Page 2: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Design Pattern

● Patterns are proven solutions

● Patterns can be easily reused

● Patterns can be expressive

Page 3: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

DRY

Don’t Repeat Yourself

WET

Page 4: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

General and JS-specific Patterns

Page 5: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.
Page 6: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Immediately Invoked Function Expression (IIFE)

Page 7: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Module

● Lack of access modifiers;

● Global namespace polluting;

● Code structuring.

problems to solve

Page 8: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Moduleplain object

Page 9: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

ModuleIIFE

Page 10: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Revealing Module

● Module is not explicit

● Better code structuring.

problems to solve

Page 11: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Revealing Moduleexample

Page 12: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Factoryexample

Page 13: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Factorywhen to use

● When our object or component setup involves a high level of complexity

● We need to easily generate different instances of objects depending on the

environment

● Working with many small objects that share the same properties

● Objects need only satisfy an API contract (aka, duck typing) to work

Page 14: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Facade

● API Complexity

Page 15: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Mixin

Page 16: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Mixin

Page 17: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Publish/Subscribe

Page 18: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Publish/Subscribe

Page 19: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Mediator

Page 20: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

User Interface Patterns

Page 21: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.
Page 22: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

DOM-oriented

Page 23: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

MVVM (Model-View-ViewModel)

Page 24: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

MVVM (Model-View-ViewModel)

Page 25: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

MVVM (Model-View-ViewModel)

Page 26: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

MVVM With Looser Data-Bindings

Page 27: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

MVVM With Looser Data-Bindings

Page 28: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

MVC

Page 29: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Angular

Page 30: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Angular

Page 31: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

React

Page 32: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

React

Page 33: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

React

Page 34: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

MVC (Model-View-Controller)

MV* (Model-View-*) | Presenter

Page 35: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Backbone

Page 36: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

Modular Patterns

Page 37: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

AMD

Page 38: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

CommonJS

Page 39: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

UMDjsAMD

CommonJS

Sadness

Page 40: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

RequireJS

Page 41: Binary Studio Academy PRO. JS course. Lecture 1.  UI Architecture.

ES Harmony