SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
ReactJS
Свет в конце тоннеля
Web UI Разработка
MVC Приложения
Web UI Frameworks
Проблемы Масштаба
• Чем больше фич, тем сложнее работать
• Чем больше людей, тем сложнее работать
• Код становится непредсказуем, а разработка -
дорогой
Facebook
Ads Org
(data) => View
Buddy List
ReactJS
ReactJS
Compose UI from components written in declarative
imperative code
(data) => View
Declarative imperative code
Простой Компонент
var TodoList = React.createClass({
render: function() {
var createItem = function(itemText) {
return <li>{itemText}</li>;
};
return <ul>{this.props.items.map(createItem)}</ul>;
}
});

// ul + li - components, too
–ReactJS
“Рендерить все, и никаких гвоздей”
ReactJS
• Собираем UI из компонентов, которые рендерятся в
виртуальный DOM.
• ReactJS синхронизирует VDOM с DOM в браузере.
• JSX - опциональный, но очень удобный формат.
• ReactJS компоненты содержат код и шаблон в одном
файле.
• Может рендериться на клиенте и сервере.
• Работает ОЧЕНЬ быстро.
State
var TodoApp = React.createClass({
getInitialState: function() {
return {items: [], text: ''};
},
onChange: function(e) {
this.setState({text: e.target.value});
},
handleSubmit: function(e) {
e.preventDefault();
var nextItems = this.state.items.concat([this.state.text]);
var nextText = '';
this.setState({items: nextItems, text: nextText});
},
render: function() {
return (
<div>
<h3>TODO</h3>
<TodoList items={this.state.items} />
<form onSubmit={this.handleSubmit}>
<input onChange={this.onChange} value={this.state.text} />
<button>{'Add #' + (this.state.items.length + 1)}</button>
</form>
</div>
);
}
});
Вопросы?
Re: ReactJS and UI composition
Смотрим демку и код
Чисто ReactJS
// abdullin.com
https://github.com/abdullin/gtd
А что, если?
Вопросы?
@abdullin / http://abdullin.com

Más contenido relacionado

La actualidad más candente

Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Provectus
 
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Ontico
 
Сергей Рыжиков (1С-Битрикс)
Сергей Рыжиков (1С-Битрикс)Сергей Рыжиков (1С-Битрикс)
Сергей Рыжиков (1С-Битрикс)
Ontico
 

La actualidad más candente (20)

Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
Тимофей Лавренюк (Provectus): "Progressive Web Apps in Production"
 
Артем Тритяк, Lead Front-End developer в Electric Cloud
 Артем Тритяк, Lead Front-End developer в Electric Cloud Артем Тритяк, Lead Front-End developer в Electric Cloud
Артем Тритяк, Lead Front-End developer в Electric Cloud
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 
Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)
Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)
Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
 
Full Stack разработка на JavaScript
Full Stack разработка на JavaScriptFull Stack разработка на JavaScript
Full Stack разработка на JavaScript
 
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
День 3: Автоматизированное тестирование: Openshift
 День 3: Автоматизированное тестирование: Openshift День 3: Автоматизированное тестирование: Openshift
День 3: Автоматизированное тестирование: Openshift
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
 
Migration of Cloud Services to Microsoft Azure Service Fabric
Migration of Cloud Services to Microsoft Azure Service FabricMigration of Cloud Services to Microsoft Azure Service Fabric
Migration of Cloud Services to Microsoft Azure Service Fabric
 
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
 
Сергей Рыжиков (1С-Битрикс)
Сергей Рыжиков (1С-Битрикс)Сергей Рыжиков (1С-Битрикс)
Сергей Рыжиков (1С-Битрикс)
 
A.pleshkov
A.pleshkovA.pleshkov
A.pleshkov
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 
Vue.js - реактивный фронтенд фреймворк для людей
Vue.js - реактивный фронтенд фреймворк для людейVue.js - реактивный фронтенд фреймворк для людей
Vue.js - реактивный фронтенд фреймворк для людей
 

Similar a ReactJS: Свет в конце тоннеля

2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
HappyDev
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico
 

Similar a ReactJS: Свет в конце тоннеля (20)

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
 
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
 
RichFaces: обзор
RichFaces: обзорRichFaces: обзор
RichFaces: обзор
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
Appery.io Ukraine_2016
Appery.io Ukraine_2016Appery.io Ukraine_2016
Appery.io Ukraine_2016
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
"Изоморфный D3 + MALEVICH", Алексей Охрименко, MoscowJS 25
"Изоморфный D3 + MALEVICH", Алексей Охрименко, MoscowJS 25"Изоморфный D3 + MALEVICH", Алексей Охрименко, MoscowJS 25
"Изоморфный D3 + MALEVICH", Алексей Охрименко, MoscowJS 25
 

ReactJS: Свет в конце тоннеля