SlideShare a Scribd company logo
Front-end в Magento
и не только
(Перспективы, технологии, инструменты)
Денис Босак
Содержание Веб компоненты
SPA (Single Page Applications)
Мобильные приложения
2
3
седло
кассета
педаль
тормоз
обод
покрышка
вилка
руль
рама
4
5
ссылки
фильтры
хлебные
крошки
подписка
продукт
мини корзина
навигация/категории
сортировка/пагинация
6
Что-то может сломаться
Сложно работать командой
Сложно подключать js плагины
Сложности с переносом функционала
Много времени на введение нового человека
Множество соглашений и стандартов
Традиционный подход
7
Набор стандартов, которые позволяют создавать
изолированные и самодостаточные элементы интерфейса.
Веб-компонент имеет:
Персональный тег
Свой JavaScript
Изолированные стили
Свою внутреннею структуру
Веб-компоненты
8
Кастомные элементы
Теневая модель документа
Шаблоны
HTML импорт
Веб-компоненты
9
Позволяют создавать пользовательские теги.
Основные возможности:
Можно создавать полностью новые теги
<my-element></my-element>
Наследоваться от существующих
<input is=“color-picker” />
Описывать их поведение
Доступен их жизненный цикл
Кастомные элементы (custom elements)
10
Позволяет создавать скрытую структуру элемента.
Прячем особенности реализации
Защищаем его от внешних воздействий
Удобно управляем содержимым
Теневая модель документа (shadow DOM)
11
Нужны нам для шаблонизации внутри элемента.
<div class=“hidden”> … </div>
Могут содержать стили и html
Контент шаблонов не отображается, пока он не
клонирован
Используется ленивая загрузка (lazy load)
Шаблоны (template)
<template></template>
12
Используется для вставки другого HTML, CSS, JavaScript
внутрь страницы.
Мы собираем все наши стили, JavaScript, и верстку
в один файл, и просто подключаем его одной строкой.
<link rel="import" href="/some-module.html“ />
HTML Imports
13
Небольшой пример: Mini cart
<link rel="import" href="components/mini-cart.html"/>
<mini-cart cart-url="/cart" checkout-url="/checkout">
<cart-item url="/product1" remove-url="/cart/?re-
move=product1">
<product-image>image.jpg</product-image>
<name>Product Example</name>
<qty>1</qty>
<price>$120</price>
</cart-item>
<cart-item url="/product2" remove-url="/cart/?re-
move=product2">
<product-image>image2.jpg</product-image>
<name>Product Example 2</name>
<qty>2</qty>
<price>$250</price>
</cart-item>
<total>$620</total>
</mini-cart>
https://github.com/a2ntis/webcomponent-minicart-example
14
Компоненты защищены от внешних воздействий и сами
компоненты тоже не смогут ничего поломать
Готовые компоненты легко использовать
Работать командой будет легче — каждый разработчик делает свой
компонент и не мешает другим
Возможность больше времени уделить разработке каждого
компонента и "довести его до ума"
Компоненты делают из сложной верстки – простую и понятную
структуру
Больше свободы в выборе технологий и языков
Преимущества:
15
Пока не очень хорошо
Поддержка браузерами
HTML
Imports
Custom
Elements
Shadow
DOM
Templates
Chrome
+
+
+
+
+
+
+
+
+
+/-
+/-
+/-
+
-
-
-
+/-
-
-
-
Opera Firefox Safari IE/Edge
16
Надстройка над спецификацией web components, которая
предоставляет её поддержку актуальными версиями браузеров.
Webcomponents.js
HTML
Imports
Custom
Elements
Shadow
DOM
Templates
Chrome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/-
+/-
+
+
+
+
+
+
Opera Firefox Safari IE10 IE11+/Edge
17
Расширенная поддержка спецификаций web components
Есть библиотека готовых компонентов, к примеру:
<google-map latitude="37.790" longitude="-122.390"></google-map>
Декларативный стиль создания компонентов
https://www.polymer-project.org/1.0/
Polymer ― полифилы от Google
18
Будут появляться репозитории с готовым компонентами
(уже есть, но дальше будет больше)
Js плагины будут использоваться всё реже (например,
вместо js плагина для карусели мы получим компонент с
тегом <slide-carousel></slide-carousel> и т. п.)
HTML код станет более понятным и читаемым, как для
человека, так и для робота
Существенно упростится добавление нового функционала
с точки зрения frontend
Перспективы развития компонентного web
19
Высокая скорость отклика интерфейса
Возможность создать более интересный UI и UX
Возможность выбора архитектуры на стороне клиента
Более тестируемый frontend
Возможность делать крутые штуки, вроде изоморфных
приложений, распределённых приложений и многое
другое
SPA (Single Page Application)
20
Products
Product Categories
Product Images
Product Websites
Customers
Customer Addresses
Inventory
Sales Orders
Order Items
Order Addresses
Order Comments
Как это будет происходить?
Приложение Magento
RESTful API
Ресурсы:
21
React.js
Angular 2
Polymer
Frameworks (которые я считаю интересными)
22
Основные особенности:
Используется для представления (view)
Компоненты
Виртуальный DOM
Может выполняться и на сервере и на клиенте
Flux архитектура
jsx (JavaScript XML) – XML подобный синтаксис для
описания компонента
React.js
23
Компоненты — это функции
Компоненты могут иметь древовидную структуру
Компоненты имеют состояния (states) и свойства (props)
Пример простого компонента:
React.js компоненты
24
Упрощенная схема работы flux:
Flux архитектура
Action Web API
Dispatcher
Store
View
25
Имеет мало общего с Angular
Компоненты как и в Polymer
Поддерживает shadow DOM
Type Script
Очень прост в освоении
Пока не production ready
Angular 2
26
Apache Cordova
Adobe PhoneGap
Ionic framework
React Native
Mobile apps
27
Особенности такой платформы:
Концепция «Write once, run anywhere»
Использует web view или браузер
Позволяет выполнять JavaScript приложение так, как если
бы это было обычное приложение, написанное на родном
для OS языке
Предоставляется мощный API для использования
нативных функций мобильных устройств
Большие и сложные приложения теряют
производительность, особенно на старых версиях OS
Cordova (PhoneGap, Ionic)
28
Особенности такой платформы:
Концепция «Learn once, write anywhere»
Используется нативная реализация компонентов для iOS и
Android вместо WebView или браузера
Асинхронное выполнение приложения без потери
производительности
Используются CSS подобные стили
React Native расширяем, можно создавать модули на
родном для платформы языке и использовать их в своём
приложении
React Native
29
React Native
30
Все современные JavaScript библиотеки имеют
компонентную архитектуру и высокий уровень
абстракции. Похоже, что компонентного веб нам не
избежать
JavaScript с каждой своей версией становится всё более
взрослым, а его синтаксис более выразительным. Задачи,
выполняемые этим языком, будут всё более широкими
Развитие браузеров будет всё меньше влиять на
возможности разработки
Что дальше?
31
https://developer.mozilla.org/en-US/docs/Web/
Web_Components
http://webcomponents.org/
http://component.kitchen/
https://elements.polymer-project.org/
https://facebook.github.io/react/
https://angular.io/
https://facebook.github.io/react-native/
https://facebook.github.io/flux/
https://github.com/kriasoft/react-starter-kit
Полезные ссылки:
32
Спасибо за внимание!
Вопросы?
Денис Босак
E-mail: denis@magecom.net
Skype: denis.bosak
Веб: magecom.net

More Related Content

What's hot

Pres1
Pres1Pres1
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.DrupalCampDN
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
Oleksandr Torosh
 
Деплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийДеплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложений
Magecom Ukraine
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011camp_drupal_ua
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Fwdays
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1Natalia Odegova
 
Web сайт - гиперструктура данных
Web сайт - гиперструктура данныхWeb сайт - гиперструктура данных
Web сайт - гиперструктура данныхЕлена Ключева
 
NET Forge - START
NET Forge - STARTNET Forge - START
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС
2ГИС Технологии
 
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Eugene Fidelin
 
Интеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей Соловьев
Positive Hack Days
 
RichFaces: обзор
RichFaces: обзорRichFaces: обзор
RichFaces: обзор
Tatiana Aulachynskaya
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Pavel Tsukanov
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UI
Vyacheslav Lyalkin
 
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
Roman Brovko
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
Alexander Konduforov
 
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. ТрофименкоКэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко2ГИС Технологии
 
Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...
Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...
Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...
Ontico
 

What's hot (20)

Pres1
Pres1Pres1
Pres1
 
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
Деплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийДеплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложений
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1
 
Web сайт - гиперструктура данных
Web сайт - гиперструктура данныхWeb сайт - гиперструктура данных
Web сайт - гиперструктура данных
 
NET Forge - START
NET Forge - STARTNET Forge - START
NET Forge - START
 
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС«Winium — это как Selenium, только под Windows»  – Глеб Головин, 2ГИС
«Winium — это как Selenium, только под Windows» – Глеб Головин, 2ГИС
 
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.
 
Интеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей Соловьев
 
RichFaces: обзор
RichFaces: обзорRichFaces: обзор
RichFaces: обзор
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UI
 
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. ТрофименкоКэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
Кэш виджетов Yii в Redis. Отдача напрямую через Nginx. Трофименко
 
Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...
Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...
Как мы адаптировали более 150 сайтов по технологии Dynamically-served JavaScr...
 
Задачи российского офиса
Задачи российского офисаЗадачи российского офиса
Задачи российского офиса
 

Viewers also liked

Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Amasty
 
Meet Magento Belarus 2015: Kristina Pototskaya
Meet Magento Belarus 2015: Kristina PototskayaMeet Magento Belarus 2015: Kristina Pototskaya
Meet Magento Belarus 2015: Kristina Pototskaya
Amasty
 
Meet Magento Belarus 2015: Sergey Lysak
Meet Magento Belarus 2015: Sergey LysakMeet Magento Belarus 2015: Sergey Lysak
Meet Magento Belarus 2015: Sergey Lysak
Amasty
 
Meet Magento Belarus 2015: Mladen Ristić
Meet Magento Belarus 2015: Mladen RistićMeet Magento Belarus 2015: Mladen Ristić
Meet Magento Belarus 2015: Mladen Ristić
Amasty
 
Meet Magento Belarus 2015: Andrey Tataranovich
Meet Magento Belarus 2015: Andrey TataranovichMeet Magento Belarus 2015: Andrey Tataranovich
Meet Magento Belarus 2015: Andrey Tataranovich
Amasty
 
Meet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis LukssMeet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis Lukss
Amasty
 
Meet Magento Belarus - Andrew Klochkov
Meet Magento Belarus - Andrew KlochkovMeet Magento Belarus - Andrew Klochkov
Meet Magento Belarus - Andrew Klochkov
Amasty
 
Meet Magento Belarus - Davide Consonni
Meet Magento Belarus - Davide ConsonniMeet Magento Belarus - Davide Consonni
Meet Magento Belarus - Davide Consonni
Amasty
 
Meet Magento Belarus - Elena Leonova
Meet Magento Belarus - Elena LeonovaMeet Magento Belarus - Elena Leonova
Meet Magento Belarus - Elena Leonova
Amasty
 
Meet Magento Belarus - Viacheslav Kravchuk
Meet Magento Belarus - Viacheslav KravchukMeet Magento Belarus - Viacheslav Kravchuk
Meet Magento Belarus - Viacheslav Kravchuk
Amasty
 
Meet Magento Belarus - Andrey Tataranovich
Meet Magento Belarus - Andrey TataranovichMeet Magento Belarus - Andrey Tataranovich
Meet Magento Belarus - Andrey Tataranovich
Amasty
 
Meet Magento Belarus - Thomas Fleck
Meet Magento Belarus - Thomas FleckMeet Magento Belarus - Thomas Fleck
Meet Magento Belarus - Thomas Fleck
Amasty
 
Meet Magento Belarus - Sergey Ivashchenko
Meet Magento Belarus - Sergey IvashchenkoMeet Magento Belarus - Sergey Ivashchenko
Meet Magento Belarus - Sergey Ivashchenko
Amasty
 
Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2
Max Pronko
 
Lean Usability
Lean UsabilityLean Usability
Lean Usability
glusman
 
The 7 Most Common Usability Issues
The 7 Most Common Usability IssuesThe 7 Most Common Usability Issues
The 7 Most Common Usability Issues
Kissmetrics on SlideShare
 
Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010
Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010
Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010Steve Krug
 
10 Most Common Misconceptions About User Experience Design
10 Most Common Misconceptions About User Experience Design10 Most Common Misconceptions About User Experience Design
10 Most Common Misconceptions About User Experience Design
Whitney Hess
 
Death By PowerPoint Rus
Death By PowerPoint RusDeath By PowerPoint Rus
Death By PowerPoint Rus
Alexei Kapterev
 
Usability vs. User Experience: What's the difference?
Usability vs. User Experience: What's the difference?Usability vs. User Experience: What's the difference?
Usability vs. User Experience: What's the difference?
Domain7
 

Viewers also liked (20)

Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir Kalashnikau
 
Meet Magento Belarus 2015: Kristina Pototskaya
Meet Magento Belarus 2015: Kristina PototskayaMeet Magento Belarus 2015: Kristina Pototskaya
Meet Magento Belarus 2015: Kristina Pototskaya
 
Meet Magento Belarus 2015: Sergey Lysak
Meet Magento Belarus 2015: Sergey LysakMeet Magento Belarus 2015: Sergey Lysak
Meet Magento Belarus 2015: Sergey Lysak
 
Meet Magento Belarus 2015: Mladen Ristić
Meet Magento Belarus 2015: Mladen RistićMeet Magento Belarus 2015: Mladen Ristić
Meet Magento Belarus 2015: Mladen Ristić
 
Meet Magento Belarus 2015: Andrey Tataranovich
Meet Magento Belarus 2015: Andrey TataranovichMeet Magento Belarus 2015: Andrey Tataranovich
Meet Magento Belarus 2015: Andrey Tataranovich
 
Meet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis LukssMeet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis Lukss
 
Meet Magento Belarus - Andrew Klochkov
Meet Magento Belarus - Andrew KlochkovMeet Magento Belarus - Andrew Klochkov
Meet Magento Belarus - Andrew Klochkov
 
Meet Magento Belarus - Davide Consonni
Meet Magento Belarus - Davide ConsonniMeet Magento Belarus - Davide Consonni
Meet Magento Belarus - Davide Consonni
 
Meet Magento Belarus - Elena Leonova
Meet Magento Belarus - Elena LeonovaMeet Magento Belarus - Elena Leonova
Meet Magento Belarus - Elena Leonova
 
Meet Magento Belarus - Viacheslav Kravchuk
Meet Magento Belarus - Viacheslav KravchukMeet Magento Belarus - Viacheslav Kravchuk
Meet Magento Belarus - Viacheslav Kravchuk
 
Meet Magento Belarus - Andrey Tataranovich
Meet Magento Belarus - Andrey TataranovichMeet Magento Belarus - Andrey Tataranovich
Meet Magento Belarus - Andrey Tataranovich
 
Meet Magento Belarus - Thomas Fleck
Meet Magento Belarus - Thomas FleckMeet Magento Belarus - Thomas Fleck
Meet Magento Belarus - Thomas Fleck
 
Meet Magento Belarus - Sergey Ivashchenko
Meet Magento Belarus - Sergey IvashchenkoMeet Magento Belarus - Sergey Ivashchenko
Meet Magento Belarus - Sergey Ivashchenko
 
Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2
 
Lean Usability
Lean UsabilityLean Usability
Lean Usability
 
The 7 Most Common Usability Issues
The 7 Most Common Usability IssuesThe 7 Most Common Usability Issues
The 7 Most Common Usability Issues
 
Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010
Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010
Steve Krug: Lazy Person's Guide to a Better World - UX Lisbon 2010
 
10 Most Common Misconceptions About User Experience Design
10 Most Common Misconceptions About User Experience Design10 Most Common Misconceptions About User Experience Design
10 Most Common Misconceptions About User Experience Design
 
Death By PowerPoint Rus
Death By PowerPoint RusDeath By PowerPoint Rus
Death By PowerPoint Rus
 
Usability vs. User Experience: What's the difference?
Usability vs. User Experience: What's the difference?Usability vs. User Experience: What's the difference?
Usability vs. User Experience: What's the difference?
 

Similar to Meet Magento Belarus 2015: Denis Bosak

Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?
Oleksandr Torosh
 
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
Provectus
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
Igor Shkulipa
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
IT-Доминанта
 
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Anatoly Kireev
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendenciesDarkestMaster
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NETMedia Gorod
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
Fwdays
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
C# Web. Занятие 05.
C# Web. Занятие 05.C# Web. Занятие 05.
C# Web. Занятие 05.
Igor Shkulipa
 
Symfony 3
Symfony 3Symfony 3
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиковMedia Gorod
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
ITCrowd Almaty
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5
Microsoft
 

Similar to Meet Magento Belarus 2015: Denis Bosak (20)

Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?
 
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
 
Appery.io Ukraine_2016
Appery.io Ukraine_2016Appery.io Ukraine_2016
Appery.io Ukraine_2016
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendencies
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
C# Web. Занятие 05.
C# Web. Занятие 05.C# Web. Занятие 05.
C# Web. Занятие 05.
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5
 

More from Amasty

Способы оптимизации работы с памятью в Magento 2
Способы оптимизации работы с памятью в Magento 2Способы оптимизации работы с памятью в Magento 2
Способы оптимизации работы с памятью в Magento 2
Amasty
 
Magento Security from Developer's and Tester's Points of View
Magento Security from Developer's and Tester's Points of ViewMagento Security from Developer's and Tester's Points of View
Magento Security from Developer's and Tester's Points of View
Amasty
 
A joyful shopping experience. Creating e-commerce sites that are effortless t...
A joyful shopping experience. Creating e-commerce sites that are effortless t...A joyful shopping experience. Creating e-commerce sites that are effortless t...
A joyful shopping experience. Creating e-commerce sites that are effortless t...
Amasty
 
Follow up email_for_magento_2_user_guide
Follow up email_for_magento_2_user_guideFollow up email_for_magento_2_user_guide
Follow up email_for_magento_2_user_guide
Amasty
 
Order Status for Magrnto 2 by Amasty
Order Status for Magrnto 2 by AmastyOrder Status for Magrnto 2 by Amasty
Order Status for Magrnto 2 by Amasty
Amasty
 
Order Attributes for Magento 2
Order Attributes for Magento 2Order Attributes for Magento 2
Order Attributes for Magento 2
Amasty
 
Shipping Table Rates for Magento 2 by Amasty | User Guide
Shipping Table Rates for Magento 2 by Amasty | User GuideShipping Table Rates for Magento 2 by Amasty | User Guide
Shipping Table Rates for Magento 2 by Amasty | User Guide
Amasty
 
Customer Group Catalog for Magento 2. User Guide
Customer Group Catalog for Magento 2. User GuideCustomer Group Catalog for Magento 2. User Guide
Customer Group Catalog for Magento 2. User Guide
Amasty
 
Product Parts Finder for Magento 2 | User Guide
Product Parts Finder for Magento 2 | User GuideProduct Parts Finder for Magento 2 | User Guide
Product Parts Finder for Magento 2 | User Guide
Amasty
 
Edit Lock Magento Extension by Amasty | User Guide
Edit Lock Magento Extension by Amasty | User GuideEdit Lock Magento Extension by Amasty | User Guide
Edit Lock Magento Extension by Amasty | User Guide
Amasty
 
Advanced Reports Magento Extension by Amasty | User Guide
Advanced Reports Magento Extension by Amasty | User GuideAdvanced Reports Magento Extension by Amasty | User Guide
Advanced Reports Magento Extension by Amasty | User Guide
Amasty
 
A/B Testing Magento Extension by Amasty | User Guide
A/B Testing Magento Extension by Amasty | User GuideA/B Testing Magento Extension by Amasty | User Guide
A/B Testing Magento Extension by Amasty | User Guide
Amasty
 
Store Credit Magento Extension by Amasty | User Guide
Store Credit Magento Extension by Amasty | User GuideStore Credit Magento Extension by Amasty | User Guide
Store Credit Magento Extension by Amasty | User Guide
Amasty
 
Advanced Customer Segments Magento Extension by Amasty | User Guide
Advanced Customer Segments Magento Extension by Amasty | User GuideAdvanced Customer Segments Magento Extension by Amasty | User Guide
Advanced Customer Segments Magento Extension by Amasty | User Guide
Amasty
 
Order Archive Magento Extension by Amasty | User Guide
Order Archive Magento Extension by Amasty | User GuideOrder Archive Magento Extension by Amasty | User Guide
Order Archive Magento Extension by Amasty | User Guide
Amasty
 

More from Amasty (15)

Способы оптимизации работы с памятью в Magento 2
Способы оптимизации работы с памятью в Magento 2Способы оптимизации работы с памятью в Magento 2
Способы оптимизации работы с памятью в Magento 2
 
Magento Security from Developer's and Tester's Points of View
Magento Security from Developer's and Tester's Points of ViewMagento Security from Developer's and Tester's Points of View
Magento Security from Developer's and Tester's Points of View
 
A joyful shopping experience. Creating e-commerce sites that are effortless t...
A joyful shopping experience. Creating e-commerce sites that are effortless t...A joyful shopping experience. Creating e-commerce sites that are effortless t...
A joyful shopping experience. Creating e-commerce sites that are effortless t...
 
Follow up email_for_magento_2_user_guide
Follow up email_for_magento_2_user_guideFollow up email_for_magento_2_user_guide
Follow up email_for_magento_2_user_guide
 
Order Status for Magrnto 2 by Amasty
Order Status for Magrnto 2 by AmastyOrder Status for Magrnto 2 by Amasty
Order Status for Magrnto 2 by Amasty
 
Order Attributes for Magento 2
Order Attributes for Magento 2Order Attributes for Magento 2
Order Attributes for Magento 2
 
Shipping Table Rates for Magento 2 by Amasty | User Guide
Shipping Table Rates for Magento 2 by Amasty | User GuideShipping Table Rates for Magento 2 by Amasty | User Guide
Shipping Table Rates for Magento 2 by Amasty | User Guide
 
Customer Group Catalog for Magento 2. User Guide
Customer Group Catalog for Magento 2. User GuideCustomer Group Catalog for Magento 2. User Guide
Customer Group Catalog for Magento 2. User Guide
 
Product Parts Finder for Magento 2 | User Guide
Product Parts Finder for Magento 2 | User GuideProduct Parts Finder for Magento 2 | User Guide
Product Parts Finder for Magento 2 | User Guide
 
Edit Lock Magento Extension by Amasty | User Guide
Edit Lock Magento Extension by Amasty | User GuideEdit Lock Magento Extension by Amasty | User Guide
Edit Lock Magento Extension by Amasty | User Guide
 
Advanced Reports Magento Extension by Amasty | User Guide
Advanced Reports Magento Extension by Amasty | User GuideAdvanced Reports Magento Extension by Amasty | User Guide
Advanced Reports Magento Extension by Amasty | User Guide
 
A/B Testing Magento Extension by Amasty | User Guide
A/B Testing Magento Extension by Amasty | User GuideA/B Testing Magento Extension by Amasty | User Guide
A/B Testing Magento Extension by Amasty | User Guide
 
Store Credit Magento Extension by Amasty | User Guide
Store Credit Magento Extension by Amasty | User GuideStore Credit Magento Extension by Amasty | User Guide
Store Credit Magento Extension by Amasty | User Guide
 
Advanced Customer Segments Magento Extension by Amasty | User Guide
Advanced Customer Segments Magento Extension by Amasty | User GuideAdvanced Customer Segments Magento Extension by Amasty | User Guide
Advanced Customer Segments Magento Extension by Amasty | User Guide
 
Order Archive Magento Extension by Amasty | User Guide
Order Archive Magento Extension by Amasty | User GuideOrder Archive Magento Extension by Amasty | User Guide
Order Archive Magento Extension by Amasty | User Guide
 

Meet Magento Belarus 2015: Denis Bosak

  • 1. Front-end в Magento и не только (Перспективы, технологии, инструменты) Денис Босак
  • 2. Содержание Веб компоненты SPA (Single Page Applications) Мобильные приложения 2
  • 3. 3
  • 5. 5
  • 7. Что-то может сломаться Сложно работать командой Сложно подключать js плагины Сложности с переносом функционала Много времени на введение нового человека Множество соглашений и стандартов Традиционный подход 7
  • 8. Набор стандартов, которые позволяют создавать изолированные и самодостаточные элементы интерфейса. Веб-компонент имеет: Персональный тег Свой JavaScript Изолированные стили Свою внутреннею структуру Веб-компоненты 8
  • 9. Кастомные элементы Теневая модель документа Шаблоны HTML импорт Веб-компоненты 9
  • 10. Позволяют создавать пользовательские теги. Основные возможности: Можно создавать полностью новые теги <my-element></my-element> Наследоваться от существующих <input is=“color-picker” /> Описывать их поведение Доступен их жизненный цикл Кастомные элементы (custom elements) 10
  • 11. Позволяет создавать скрытую структуру элемента. Прячем особенности реализации Защищаем его от внешних воздействий Удобно управляем содержимым Теневая модель документа (shadow DOM) 11
  • 12. Нужны нам для шаблонизации внутри элемента. <div class=“hidden”> … </div> Могут содержать стили и html Контент шаблонов не отображается, пока он не клонирован Используется ленивая загрузка (lazy load) Шаблоны (template) <template></template> 12
  • 13. Используется для вставки другого HTML, CSS, JavaScript внутрь страницы. Мы собираем все наши стили, JavaScript, и верстку в один файл, и просто подключаем его одной строкой. <link rel="import" href="/some-module.html“ /> HTML Imports 13
  • 14. Небольшой пример: Mini cart <link rel="import" href="components/mini-cart.html"/> <mini-cart cart-url="/cart" checkout-url="/checkout"> <cart-item url="/product1" remove-url="/cart/?re- move=product1"> <product-image>image.jpg</product-image> <name>Product Example</name> <qty>1</qty> <price>$120</price> </cart-item> <cart-item url="/product2" remove-url="/cart/?re- move=product2"> <product-image>image2.jpg</product-image> <name>Product Example 2</name> <qty>2</qty> <price>$250</price> </cart-item> <total>$620</total> </mini-cart> https://github.com/a2ntis/webcomponent-minicart-example 14
  • 15. Компоненты защищены от внешних воздействий и сами компоненты тоже не смогут ничего поломать Готовые компоненты легко использовать Работать командой будет легче — каждый разработчик делает свой компонент и не мешает другим Возможность больше времени уделить разработке каждого компонента и "довести его до ума" Компоненты делают из сложной верстки – простую и понятную структуру Больше свободы в выборе технологий и языков Преимущества: 15
  • 16. Пока не очень хорошо Поддержка браузерами HTML Imports Custom Elements Shadow DOM Templates Chrome + + + + + + + + + +/- +/- +/- + - - - +/- - - - Opera Firefox Safari IE/Edge 16
  • 17. Надстройка над спецификацией web components, которая предоставляет её поддержку актуальными версиями браузеров. Webcomponents.js HTML Imports Custom Elements Shadow DOM Templates Chrome + + + + + + + + + + + + + + + + +/- +/- + + + + + + Opera Firefox Safari IE10 IE11+/Edge 17
  • 18. Расширенная поддержка спецификаций web components Есть библиотека готовых компонентов, к примеру: <google-map latitude="37.790" longitude="-122.390"></google-map> Декларативный стиль создания компонентов https://www.polymer-project.org/1.0/ Polymer ― полифилы от Google 18
  • 19. Будут появляться репозитории с готовым компонентами (уже есть, но дальше будет больше) Js плагины будут использоваться всё реже (например, вместо js плагина для карусели мы получим компонент с тегом <slide-carousel></slide-carousel> и т. п.) HTML код станет более понятным и читаемым, как для человека, так и для робота Существенно упростится добавление нового функционала с точки зрения frontend Перспективы развития компонентного web 19
  • 20. Высокая скорость отклика интерфейса Возможность создать более интересный UI и UX Возможность выбора архитектуры на стороне клиента Более тестируемый frontend Возможность делать крутые штуки, вроде изоморфных приложений, распределённых приложений и многое другое SPA (Single Page Application) 20
  • 21. Products Product Categories Product Images Product Websites Customers Customer Addresses Inventory Sales Orders Order Items Order Addresses Order Comments Как это будет происходить? Приложение Magento RESTful API Ресурсы: 21
  • 22. React.js Angular 2 Polymer Frameworks (которые я считаю интересными) 22
  • 23. Основные особенности: Используется для представления (view) Компоненты Виртуальный DOM Может выполняться и на сервере и на клиенте Flux архитектура jsx (JavaScript XML) – XML подобный синтаксис для описания компонента React.js 23
  • 24. Компоненты — это функции Компоненты могут иметь древовидную структуру Компоненты имеют состояния (states) и свойства (props) Пример простого компонента: React.js компоненты 24
  • 25. Упрощенная схема работы flux: Flux архитектура Action Web API Dispatcher Store View 25
  • 26. Имеет мало общего с Angular Компоненты как и в Polymer Поддерживает shadow DOM Type Script Очень прост в освоении Пока не production ready Angular 2 26
  • 27. Apache Cordova Adobe PhoneGap Ionic framework React Native Mobile apps 27
  • 28. Особенности такой платформы: Концепция «Write once, run anywhere» Использует web view или браузер Позволяет выполнять JavaScript приложение так, как если бы это было обычное приложение, написанное на родном для OS языке Предоставляется мощный API для использования нативных функций мобильных устройств Большие и сложные приложения теряют производительность, особенно на старых версиях OS Cordova (PhoneGap, Ionic) 28
  • 29. Особенности такой платформы: Концепция «Learn once, write anywhere» Используется нативная реализация компонентов для iOS и Android вместо WebView или браузера Асинхронное выполнение приложения без потери производительности Используются CSS подобные стили React Native расширяем, можно создавать модули на родном для платформы языке и использовать их в своём приложении React Native 29
  • 31. Все современные JavaScript библиотеки имеют компонентную архитектуру и высокий уровень абстракции. Похоже, что компонентного веб нам не избежать JavaScript с каждой своей версией становится всё более взрослым, а его синтаксис более выразительным. Задачи, выполняемые этим языком, будут всё более широкими Развитие браузеров будет всё меньше влиять на возможности разработки Что дальше? 31
  • 33. Спасибо за внимание! Вопросы? Денис Босак E-mail: denis@magecom.net Skype: denis.bosak Веб: magecom.net