"backbone react flux" Артем Тритяк

32
React.js and Flux Artyom Trityak Electric Cloud Skype: art.trityak E-mail: [email protected]

Upload: fwdays

Post on 18-Jul-2015

351 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: "Backbone React Flux" Артем Тритяк

React.jsи FLUX

Artyom Trityak

React.js and Flux

Artyom Trityak Electric Cloud Skype: art.trityak E-mail: [email protected]

Page 2: "Backbone React Flux" Артем Тритяк

• Build complex UI without pain

• That’s easy - re-render whole page on change

• React.js will make a diff and apply only changes to DOM

React? What’s React? Why React?

Page 3: "Backbone React Flux" Артем Тритяк

React elements composition

Page 4: "Backbone React Flux" Артем Тритяк

Nested elements

Page 5: "Backbone React Flux" Артем Тритяк

Nested elements

Page 6: "Backbone React Flux" Артем Тритяк

Nested elements

this.props.children

Page 7: "Backbone React Flux" Артем Тритяк

• SEO - no need phantom.js renderer for SPA

• Increase first load speed

• JS-bindings «on flight»

Server Side Rendering

Page 8: "Backbone React Flux" Артем Тритяк

Server Side Rendering: Node.js

Page 9: "Backbone React Flux" Артем Тритяк

Server Side Rendering: Node.js

https://github.com/artyomtrityak/react-server-render-node

Page 10: "Backbone React Flux" Артем Тритяк
Page 11: "Backbone React Flux" Артем Тритяк

Flux

Page 12: "Backbone React Flux" Артем Тритяк

Flux: one directional data flow

Page 13: "Backbone React Flux" Артем Тритяк

onClick onSelect

onChange …

Actions.actionName(params) !

UserActions.createUser(…) UserActions.selectGroup(…) 1

2

3

Flux: Who is owner? React is owner

Page 14: "Backbone React Flux" Артем Тритяк

1

2

3

4

Page 15: "Backbone React Flux" Артем Тритяк

Flux: Action -> WebUtils -> Dispatcher

12

3

Page 16: "Backbone React Flux" Артем Тритяк

Сервер

Fetch.js Superagent jQuery.ajax

Page 17: "Backbone React Flux" Артем Тритяк

EventEmitter

EventEmitter Events

1

2

3

Page 18: "Backbone React Flux" Артем Тритяк

ES6 Store

Page 19: "Backbone React Flux" Артем Тритяк

Immutable.js

http://facebook.github.io/immutable-js

• Immutable state

• One directional data flow

Page 20: "Backbone React Flux" Артем Тритяк

Flux: «умные» и «глупые» компоненты

Smart component (state)

STORE

ACTIONS

Page 21: "Backbone React Flux" Артем Тритяк

Flux: «умные» и «глупые» компоненты

Smart component (state)

STORE

ACTIONS

Dumb component

(props)

Dumb component

(props)

Dumb component

(props)

props

ФЫВcallbacks

Page 22: "Backbone React Flux" Артем Тритяк

Flux: examples

https://github.com/facebook/flux/tree/master/examples

https://github.com/gaearon/flux-react-router-example

Page 23: "Backbone React Flux" Артем Тритяк

React Router

Page 24: "Backbone React Flux" Артем Тритяк

React Router

Page 25: "Backbone React Flux" Артем Тритяк

React Router

Page 26: "Backbone React Flux" Артем Тритяк

React Router

Page 27: "Backbone React Flux" Артем Тритяк

React Router

Page 28: "Backbone React Flux" Артем Тритяк

+Bonus

React Native

end 2015 - beg 2016

https://github.com/facebook/react-native

Page 29: "Backbone React Flux" Артем Тритяк

Facebook groups app

Page 30: "Backbone React Flux" Артем Тритяк

• JavaScript

• NO WebView

• NO browser

• JavaScript logic in separated thread does not block Native UI

• JSX HTML -> Native platform elements

• Learn once, write everywhere

• Example: http://www.facebookgroups.com/

React Native

Page 31: "Backbone React Flux" Артем Тритяк

iOS / Android devs: «But…»

Page 32: "Backbone React Flux" Артем Тритяк