SlideShare uma empresa Scribd logo
1 de 78
Baixar para ler offline
Классические архитектуры во
фронтенде
Александра Шинкевич (@neesoglasnaja)
MV*
MVC
MVP
MVVM
2
Flux
3
bit.ly/fc2016-mv
4
Пример
5
TodoList
6
Никакой архитектуры
1. HTML
7
Никакой архитектуры
1. HTML
2. JS
8
Никакой архитектуры
1. HTML
2. JS
3. AJAX
9
Проблемы
— Данные хранятся в DOM
— Вариативность синтаксиса
10
MV*
MVC
MVP
MVVM
11
12
Преимущества MV*
— Определенная структура
— Модульность
— Переносимость
— Масштабируемость
— Тестируемость
13
MVC
MV*
MVP
MVVM
14
MVC
15
MVC
16
MVC
17
MVC
18
MVC
19
MVC
20
MVC
21
MVC
22
MVC
23
MVC
24
MVC
25
MVC
26
Пример MVC
27
MVC: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/controllers.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
28
MVC: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/controllers.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
29
MVC: app.js
var list = new ListController() ;01.
30
MVC: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/controllers.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
31
MVC: controllers.js
function ListController() {
var model = new TasksModel() ;
var view = new ListView( model );
}
01.
02.
03.
view.addCreateTaskHandler(function(taskTitle) { ... });04.
view.addCheckedHandler(function(id) { ... });05.
06.
32
MVC: controllers.js
function ListController() {
view. addCreateTaskHandler (function(taskTitle) { ... });
view. addCheckedHandler (function(id) { ... });
}
01.
var model = new TasksModel();02.
var view = new ListView(model);03.
04.
05.
06.
33
MVC: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/controllers.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
34
MVC: views.js
function ListView(model) {
var html = $( ... );
}
01.
02.
customEvents.registerEvent('UpdateList');03.
customEvents.addEventListener('UpdateList', function() { ... });04.
return {05.
addCreateTaskHandler: function(handler) { ... },06.
addCheckedHandler: function(handler) { ... }07.
};08.
09.
35
MVC: views.js
function ListView(model) {
customEvents. registerEvent ('UpdateList');
customEvents. addEventListener ('UpdateList', function() { ... });
}
01.
var html = $( ... );02.
03.
04.
return {05.
addCreateTaskHandler: function(handler) { ... },06.
addCheckedHandler: function(handler) { ... }07.
};08.
09.
36
MVC: views.js
function ListView(model) {
return {
addCreateTaskHandler : function(handler) { ... },
addCheckedHandler : function(handler) { ... }
};
}
01.
var html = $( ... );02.
customEvents.registerEvent('UpdateList');03.
customEvents.addEventListener('UpdateList', function() { ... });04.
05.
06.
07.
08.
09.
37
MVC: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/controllers.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
38
MVC: models.js
function TasksModel() {
return {
data : {},
getAll : function() { ... },
addItem : function(name) { ... },
deleteItem : function(id) { ... },
};
};
01.
02.
03.
04.
05.
06.
07.
08.
39
MVC: models.js
addItem: function(name) {
customEvents. dispatchEvent ('UpdateList');
}
01.
this.data[(new Date()).getTime()] = name;02.
03.
04.
40
MVC: Приложение
Awesome MVC task list
Don't forget!
Add a new task:
What do you need to do? I need to do   Add
41
MVP
MV*
MVC
MVVM
42
MVP
43
MVP
44
MVP
45
MVP
46
MVP
47
MVP
48
MVP
49
MVP
50
MVP
51
MVP
52
Пример MVP
53
MVP: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/presenters.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
54
MVP: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/presenters.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
55
MVP: app.js
var list = new ListPresenter() ;01.
56
MVP: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/presenters.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
57
MVP: presenters.js
function ListPresenter() {
var view = new ListView( model.getAll() );
customEvents. registerEvent ('UpdateList');
customEvents. addEventListener ('UpdateList', function() { ... });
}
01.
var model = new TasksModel();02.
03.
view.addCreateTaskHandler(function(taskTitle) { ... });04.
view.addCheckedHandler(function(id) { ... });05.
06.
07.
08.
58
MVP: HTML
<!-- ... -->
<body>
<script src=" js/utils.js "></script>
<script src=" js/models.js "></script>
<script src=" js/views.js "></script>
<script src=" js/presenters.js "></script>
<script src=" js/app.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
07.
08.
09.
59
MVP: views.js
function ListView(data) {
return {
updateView : function(data) { ... }
};
}
01.
var html = $( ... );02.
03.
addCreateTaskHandler: function(handler) { ... },04.
addCheckedHandler: function(handler) { ... },05.
06.
07.
08.
60
MVP: Приложение
Awesome MVP task list
Don't forget!
Add a new task:
What do you need to do? I need to do   Add
61
MVVM
MV*
MVC
MVP
62
MVVM
63
Связывание данных
Это такой механизм, при котором изменение значения модели с любой
стороны (View или Model) моментально вступает в силу на другой.
64
MVVM
65
Пример MVVM
66
Knockout.js
Open-source фреймворк, реализующий Model-View-ViewModel на
Javascript и data binding.
67
MVVM: HTML
<body>
<!-- Разметка html -->
<script src=" js/knockout-3.4.0.min.js "></script>
<script src=" js/viewmodel.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
68
MVVM: HTML
<form data-bind=" submit: addItem " >
<ul data-bind=" foreach: items " >
<li>
<label data-bind=" click: $parent.removeItem " >
<input type="checkbox">
<span data-bind=" text: $data " ></span>
</label>
</li>
<!-- ... -->
01.
02.
03.
04.
05.
06.
07.
08.
09.
69
MVVM: HTML
<body>
<!-- Разметка html -->
<script src=" js/knockout-3.4.0.min.js "></script>
<script src=" js/viewmodel.js "></script>
</body>
</html>
01.
02.
03.
04.
05.
06.
70
MVVM: viewmodel.js
var ListViewModel = function(items) {
return {
items : ko.observableArray(items),
itemToAdd : ko.observable(""),
};
};
01.
02.
03.
04.
addItem: function() { ... },05.
removeItem: function() { ... },06.
07.
08.
ko.applyBindings(new ListViewModel([]));09.
71
MVVM: viewmodel.js
var ListViewModel = function(items) {
return {
addItem : function() { ... },
removeItem : function() { ... },
};
};
01.
02.
items: ko.observableArray(items),03.
itemToAdd: ko.observable(""),04.
05.
06.
07.
08.
ko.applyBindings(new ListViewModel([]));09.
72
MVVM: viewmodel.js
ko.applyBindings(new ListViewModel([]));
var ListViewModel = function(items) {01.
return {02.
items: ko.observableArray(items),03.
itemToAdd: ko.observable(""),04.
addItem: function() { ... },05.
removeItem: function() { ... },06.
};07.
};08.
09.
73
MVVM: Приложение
Awesome MVVM task list
Don't forget!
Add a new task:
What do you need to do? I need to do   Add
74
Что выбрать
— Есть/можно использовать связывание данных: MVVM
— Нет/нельзя использовать связывание данных: MVP
— Нужна связь представления и данных: MVС
75
Хочу больше
— Wiki: архитектура ПО, MVC, MVP, MVVM, шаблоны проектирования
— [Хабр] Паттерны для новичков: MVC vs MVP vs MVVM
— [Хабр] И опять про MVC
— Addy Osmani: Understanding MVC And MVP [en]
— Learning JavaScript Design Patterns by Addy Osmani (ebook) [en]
— MVC в JavaScript
— Knockout.
— TodoMVC
76
Вместо вывода
77
Вопросы?
bit.ly/fc2016-mv
78

Mais conteúdo relacionado

Mais procurados

Node.js をさりげなく取り入れた 最近のフロントエンド事情について
Node.js をさりげなく取り入れた 最近のフロントエンド事情についてNode.js をさりげなく取り入れた 最近のフロントエンド事情について
Node.js をさりげなく取り入れた 最近のフロントエンド事情についてkamiyam .
 
Сборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью GruntСборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью GruntFDConf
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
3D na webu - konference OpenAlt
3D na webu - konference OpenAlt3D na webu - konference OpenAlt
3D na webu - konference OpenAltPavol Hejný
 
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Mario Jorge Pereira
 
Workshop Teknis Javascript SMK Telkom Sandhy Putra Malang
Workshop Teknis Javascript SMK Telkom Sandhy Putra MalangWorkshop Teknis Javascript SMK Telkom Sandhy Putra Malang
Workshop Teknis Javascript SMK Telkom Sandhy Putra MalangEdi Santoso
 
Node.js moduly a testovanie
Node.js moduly a testovanieNode.js moduly a testovanie
Node.js moduly a testovanieharcek
 
透過範例學習React (react tutorial 2)
透過範例學習React (react tutorial 2)透過範例學習React (react tutorial 2)
透過範例學習React (react tutorial 2)Justin Wu
 

Mais procurados (9)

Node.js をさりげなく取り入れた 最近のフロントエンド事情について
Node.js をさりげなく取り入れた 最近のフロントエンド事情についてNode.js をさりげなく取り入れた 最近のフロントエンド事情について
Node.js をさりげなく取り入れた 最近のフロントエンド事情について
 
Сборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью GruntСборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью Grunt
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
3D na webu - konference OpenAlt
3D na webu - konference OpenAlt3D na webu - konference OpenAlt
3D na webu - konference OpenAlt
 
스프링 JPA 강좌(Spring Data JPA 간단 예제)
스프링 JPA 강좌(Spring Data JPA 간단 예제)스프링 JPA 강좌(Spring Data JPA 간단 예제)
스프링 JPA 강좌(Spring Data JPA 간단 예제)
 
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
 
Workshop Teknis Javascript SMK Telkom Sandhy Putra Malang
Workshop Teknis Javascript SMK Telkom Sandhy Putra MalangWorkshop Teknis Javascript SMK Telkom Sandhy Putra Malang
Workshop Teknis Javascript SMK Telkom Sandhy Putra Malang
 
Node.js moduly a testovanie
Node.js moduly a testovanieNode.js moduly a testovanie
Node.js moduly a testovanie
 
透過範例學習React (react tutorial 2)
透過範例學習React (react tutorial 2)透過範例學習React (react tutorial 2)
透過範例學習React (react tutorial 2)
 

Destaque

Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Ontico
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
 
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)Ontico
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)Ontico
 
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Ontico
 
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)Ontico
 
UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...
UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...
UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...Ontico
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Ontico
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Ontico
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Ontico
 
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...Ontico
 
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Ontico
 
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24"Готовим промисы правильно", Андрей Яманов, MoscowJS 24
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24MoscowJS
 
AddConf. Дмитрий Сошников - Будущее ECMAScript
AddConf. Дмитрий Сошников  - Будущее ECMAScriptAddConf. Дмитрий Сошников  - Будущее ECMAScript
AddConf. Дмитрий Сошников - Будущее ECMAScriptDmitry Soshnikov
 
Обзор ES2015(ES6)
Обзор ES2015(ES6)Обзор ES2015(ES6)
Обзор ES2015(ES6)Alex Filatov
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6Dmitry Soshnikov
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"oelifantiev
 

Destaque (20)

Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
 
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
 
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
 
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
 
UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...
UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...
UX-дизайнер, ты ли это. Навыки проектировщика в стилизации интерфейсов / Илья...
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
 
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
 
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
 
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24"Готовим промисы правильно", Андрей Яманов, MoscowJS 24
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24
 
AddConf. Дмитрий Сошников - Будущее ECMAScript
AddConf. Дмитрий Сошников  - Будущее ECMAScriptAddConf. Дмитрий Сошников  - Будущее ECMAScript
AddConf. Дмитрий Сошников - Будущее ECMAScript
 
доклад
докладдоклад
доклад
 
Обзор ES2015(ES6)
Обзор ES2015(ES6)Обзор ES2015(ES6)
Обзор ES2015(ES6)
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
 

Mais de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)