wordpress: react way by oleksandr strikha

31
WordPress: React way

Upload: wordcamp-kyiv

Post on 23-Jan-2018

229 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: WordPress: React way by Oleksandr Strikha

WordPress: React way

Page 2: WordPress: React way by Oleksandr Strikha

New WEB

Page 3: WordPress: React way by Oleksandr Strikha

New WEB

Page 4: WordPress: React way by Oleksandr Strikha

New WEB

Page 5: WordPress: React way by Oleksandr Strikha

React?

Page 6: WordPress: React way by Oleksandr Strikha

WordPress?

Page 7: WordPress: React way by Oleksandr Strikha

WordPress

• Простота разработки

• Готовые решения

• Проверенные временем технологии

Native

Page 8: WordPress: React way by Oleksandr Strikha

WordPress

• Это круто!

• Можно создать качественный продукт

React

Page 9: WordPress: React way by Oleksandr Strikha

REST API

Page 10: WordPress: React way by Oleksandr Strikha

REST API

/admin-ajax.php /wp-json/…

Page 11: WordPress: React way by Oleksandr Strikha

React: Blog

Page 12: WordPress: React way by Oleksandr Strikha

Packages

• react https://github.com/facebook/react

• react-router https://github.com/reactjs/react-router

• react-redux https://github.com/reactjs/react-redux

• redux-thunk https://github.com/gaearon/redux-thunk

• aja https://github.com/krampstudio/aja.js

Page 13: WordPress: React way by Oleksandr Strikha

Store

let store = {

posts: [

{

id: 1,

status: 'loading'

},

{

id: 2,

status: 'full-loaded',

title: 'Some Post',

content: '...'

}

],

pages: [],

navigation: {}

};

Page 14: WordPress: React way by Oleksandr Strikha
Page 15: WordPress: React way by Oleksandr Strikha
Page 16: WordPress: React way by Oleksandr Strikha

React: innerHTML

Page 17: WordPress: React way by Oleksandr Strikha

<h1>Some Super Post Title</h1>

<p>

Lorem ipsum dolor sit amet, consectetur

adipiscing elit. Nulla quam velit...

<img src="http://site.com/image.png" alt="" />

</p>

Page 18: WordPress: React way by Oleksandr Strikha

[

{

"node": "h1",

"children": [

{

"node": "text",

"content": "Some Super Post Title"

}

]

},

{

"node": "p",

"children": [

{

"node": "text",

"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla

quam velit..."

},

{

"node": "img",

"attr": {

"src": "http://site.com/image.png",

"alt": ""

}

}

]

}

]

Page 19: WordPress: React way by Oleksandr Strikha

HTML to JSON

HTML

JSON

new DOMDocument()

Page 20: WordPress: React way by Oleksandr Strikha

Response Time

GET /home

<body></body>

ajax

<body>content</body>

TIM

E

Page 21: WordPress: React way by Oleksandr Strikha

Response Time

GET /home

<body>content</body>

TIM

E

Page 22: WordPress: React way by Oleksandr Strikha

Solution 1: pre set Store

window.__INITIAL_STATE__ = {

posts: [

{

id: 2,

status: 'full-loaded',

title: 'Some Post',

content: '...'

}

]

};

Page 23: WordPress: React way by Oleksandr Strikha

Solution 2: server rendering

Page 24: WordPress: React way by Oleksandr Strikha

Solution 2: server rendering

HTML

Page 25: WordPress: React way by Oleksandr Strikha

Solution 2: server rendering

new DOMDocument()

HTML

Page 26: WordPress: React way by Oleksandr Strikha

Solution 2: server rendering

new DOMDocument()

HTML

JSON

Page 27: WordPress: React way by Oleksandr Strikha

Solution 2: server rendering

new DOMDocument()

HTML

JSON JavaScript

Page 28: WordPress: React way by Oleksandr Strikha

Solution 2: server rendering

new DOMDocument()

HTML

JSON JavaScript

React App

Page 29: WordPress: React way by Oleksandr Strikha

Solution 2: server rendering

new DOMDocument()

HTML

JSON JavaScript

React App

HTML=

Page 30: WordPress: React way by Oleksandr Strikha

Сonclusion

• Это круто!

• Больше возможностей сделать лучше\хуже

• Все приходится писать самому

• Легко адаптировать к большой нагрузке

Page 31: WordPress: React way by Oleksandr Strikha

The end.