meet magento belarus 2015: denis bosak

33
Front-end в Magento и не только (Перспективы, технологии, инструменты) Денис Босак

Upload: amasty

Post on 16-Apr-2017

742 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Meet Magento Belarus 2015: Denis Bosak

Front-end в Magentoи не только(Перспективы, технологии, инструменты)

Денис Босак

Page 2: Meet Magento Belarus 2015: Denis Bosak

Содержание Веб компоненты

SPA (Single Page Applications)

Мобильные приложения

2

Page 3: Meet Magento Belarus 2015: Denis Bosak

3

Page 4: Meet Magento Belarus 2015: Denis Bosak

седло

кассета

педаль

тормозобод

покрышка

вилка

руль

рама

4

Page 5: Meet Magento Belarus 2015: Denis Bosak

5

Page 6: Meet Magento Belarus 2015: Denis Bosak

ссылки

фильтры

хлебныекрошки

подписка

продукт

мини корзинанавигация/категориисортировка/пагинация

6

Page 7: Meet Magento Belarus 2015: Denis Bosak

Что-то может сломаться

Сложно работать командой

Сложно подключать js плагины

Сложности с переносом функционала

Много времени на введение нового человека

Множество соглашений и стандартов

Традиционный подход

7

Page 8: Meet Magento Belarus 2015: Denis Bosak

Набор стандартов, которые позволяют создаватьизолированные и самодостаточные элементы интерфейса.

Веб-компонент имеет:

Персональный тегСвой JavaScriptИзолированные стилиСвою внутреннею структуру

Веб-компоненты

8

Page 9: Meet Magento Belarus 2015: Denis Bosak

Кастомные элементыТеневая модель документаШаблоныHTML импорт

Веб-компоненты

9

Page 10: Meet Magento Belarus 2015: Denis Bosak

Позволяют создавать пользовательские теги.

Основные возможности:

Можно создавать полностью новые теги<my-element></my-element>

Наследоваться от существующих<input is=“color-picker” />

Описывать их поведение

Доступен их жизненный цикл

Кастомные элементы (custom elements)

10

Page 11: Meet Magento Belarus 2015: Denis Bosak

Позволяет создавать скрытую структуру элемента.

Прячем особенности реализацииЗащищаем его от внешних воздействийУдобно управляем содержимым

Теневая модель документа (shadow DOM)

11

Page 12: Meet Magento Belarus 2015: Denis Bosak

Нужны нам для шаблонизации внутри элемента.

<div class=“hidden”> … </div>

Могут содержать стили и html

Контент шаблонов не отображается, пока он не клонирован

Используется ленивая загрузка (lazy load)

Шаблоны (template)

<template></template>

12

Page 13: Meet Magento Belarus 2015: Denis Bosak

Используется для вставки другого HTML, CSS, JavaScriptвнутрь страницы.

Мы собираем все наши стили, JavaScript, и версткув один файл, и просто подключаем его одной строкой.

<link rel="import" href="/some-module.html“ />

HTML Imports

13

Page 14: Meet Magento Belarus 2015: Denis Bosak

Небольшой пример: 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

Page 15: Meet Magento Belarus 2015: Denis Bosak

Компоненты защищены от внешних воздействий и сами компоненты тоже не смогут ничего поломать

Готовые компоненты легко использовать

Работать командой будет легче — каждый разработчик делает свой компонент и не мешает другим

Возможность больше времени уделить разработке каждого компонента и "довести его до ума"

Компоненты делают из сложной верстки – простую и понятную структуру

Больше свободы в выборе технологий и языков

Преимущества:

15

Page 16: Meet Magento Belarus 2015: Denis Bosak

Пока не очень хорошо

Поддержка браузерами

HTMLImports

CustomElements

ShadowDOM

Templates

Chrome

+

+

+

+

+

+

+

+

+

+/-

+/-

+/-

+

-

-

-

+/-

-

-

-

Opera Firefox Safari IE/Edge

16

Page 17: Meet Magento Belarus 2015: Denis Bosak

Надстройка над спецификацией web components, которая предоставляет её поддержку актуальными версиями браузеров.

Webcomponents.js

HTMLImports

CustomElements

ShadowDOM

Templates

Chrome

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+/-

+/-

+

+

+

+

+

+

Opera Firefox Safari IE10 IE11+/Edge

17

Page 18: Meet Magento Belarus 2015: Denis Bosak

Расширенная поддержка спецификаций web components

Есть библиотека готовых компонентов, к примеру:<google-map latitude="37.790" longitude="-122.390"></google-map>

Декларативный стиль создания компонентов

https://www.polymer-project.org/1.0/

Polymer ― полифилы от Google

18

Page 19: Meet Magento Belarus 2015: Denis Bosak

Будут появляться репозитории с готовым компонентами (уже есть, но дальше будет больше)

Js плагины будут использоваться всё реже (например, вместо js плагина для карусели мы получим компонент с тегом <slide-carousel></slide-carousel> и т. п.)

HTML код станет более понятным и читаемым, как для человека, так и для робота

Существенно упростится добавление нового функционала с точки зрения frontend

Перспективы развития компонентного web

19

Page 20: Meet Magento Belarus 2015: Denis Bosak

Высокая скорость отклика интерфейса

Возможность создать более интересный UI и UX

Возможность выбора архитектуры на стороне клиента

Более тестируемый frontend

Возможность делать крутые штуки, вроде изоморфных приложений, распределённых приложений и многое другое

SPA (Single Page Application)

20

Page 21: Meet Magento Belarus 2015: Denis Bosak

ProductsProduct CategoriesProduct ImagesProduct WebsitesCustomersCustomer Addresses

InventorySales OrdersOrder ItemsOrder AddressesOrder Comments

Как это будет происходить?

Приложение MagentoRESTful API

Ресурсы:

21

Page 22: Meet Magento Belarus 2015: Denis Bosak

React.js

Angular 2

Polymer

Frameworks (которые я считаю интересными)

22

Page 23: Meet Magento Belarus 2015: Denis Bosak

Основные особенности:

Используется для представления (view)

Компоненты

Виртуальный DOM

Может выполняться и на сервере и на клиенте

Flux архитектура

jsx (JavaScript XML) – XML подобный синтаксис для описания компонента

React.js

23

Page 24: Meet Magento Belarus 2015: Denis Bosak

Компоненты — это функции

Компоненты могут иметь древовидную структуру

Компоненты имеют состояния (states) и свойства (props)

Пример простого компонента:

React.js компоненты

24

Page 25: Meet Magento Belarus 2015: Denis Bosak

Упрощенная схема работы flux:

Flux архитектура

Action Web API

Dispatcher

Store

View

25

Page 26: Meet Magento Belarus 2015: Denis Bosak

Имеет мало общего с Angular

Компоненты как и в Polymer

Поддерживает shadow DOM

Type Script

Очень прост в освоении

Пока не production ready

Angular 2

26

Page 27: Meet Magento Belarus 2015: Denis Bosak

Apache Cordova

Adobe PhoneGap

Ionic framework

React Native

Mobile apps

27

Page 28: Meet Magento Belarus 2015: Denis Bosak

Особенности такой платформы:

Концепция «Write once, run anywhere»

Использует web view или браузер

Позволяет выполнять JavaScript приложение так, как если бы это было обычное приложение, написанное на родном для OS языке

Предоставляется мощный API для использования нативных функций мобильных устройств

Большие и сложные приложения теряют производительность, особенно на старых версиях OS

Cordova (PhoneGap, Ionic)

28

Page 29: Meet Magento Belarus 2015: Denis Bosak

Особенности такой платформы:

Концепция «Learn once, write anywhere»

Используется нативная реализация компонентов для iOS и Android вместо WebView или браузера

Асинхронное выполнение приложения без потери производительности

Используются CSS подобные стили

React Native расширяем, можно создавать модули на родном для платформы языке и использовать их в своём приложении

React Native

29

Page 30: Meet Magento Belarus 2015: Denis Bosak

React Native

30

Page 31: Meet Magento Belarus 2015: Denis Bosak

Все современные JavaScript библиотеки имеют компонентную архитектуру и высокий уровень абстракции. Похоже, что компонентного веб нам не избежать

JavaScript с каждой своей версией становится всё более взрослым, а его синтаксис более выразительным. Задачи, выполняемые этим языком, будут всё более широкими

Развитие браузеров будет всё меньше влиять на возможности разработки

Что дальше?

31

Page 32: Meet Magento Belarus 2015: Denis Bosak

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

Page 33: Meet Magento Belarus 2015: Denis Bosak

Спасибо за внимание!

Вопросы?

Денис Босак

E-mail: [email protected]: denis.bosakВеб: magecom.net