webcamp: developer day: Разработка фронтенда: от кузницы до...

56
1

Upload: geekslab

Post on 30-Jun-2015

140 views

Category:

Technology


1 download

DESCRIPTION

Разработка фронтенда: от кузницы до металлургического завода Дмитрий Поляков разработчик команды Яндекс.Маркета Первые версии фронденда Маркета далали всего несколько человек. Сегодня нас больше 20, а за это время сам Маркет технологически вырос из кузницы с ручным трудом до маленького html-завода, где многое за разработчика делают скрипты. В докладе я расскажу особенности разработки фронтенда Маркета: — создание рабочей копии для разработчика "в один клик"; — файловая структура шаблонов и их сборка; — фриз статики; — выкладка в продакшн: как обновить верстку на десятке серверов; — общие компоненты между проектами: как избавиться от копипаста и ничего не сломать новой фичей.

TRANSCRIPT

Page 1: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

1

Page 2: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

2

Разработка фронтенда От кузницы до металлургического завода

Дмитрий Поляков разработчик интерфейсов Яндекс.Маркета

Page 3: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

3

Устройство проекта и методология верстки

Page 4: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

4

А помнишь как все начиналось?

Большинство маленьких проектов:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="css/style.css" type="text/css" /> <script type="text/javascript" src="js/jquery-1.4.0.min.js"></script> <script type="text/javascript" src="js/main.js"></script> </head>

Page 5: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

5

А помнишь как все начиналось?

Добавим немного редизайна:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN”> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/new-style.css" type="text/css" /> <script type="text/javascript" src="js/jquery-1.4.0.min.js"></script> <script type="text/javascript" src="js/main.js"></script> <script type="text/javascript" src="js/new-script.js"></script> </head>

Page 6: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

6

Добавим немного редизайна

new-style.css

.newpage a { color: blue !important; text-decoration: none !important;

}

a { color: #369; outline: none; text-decoration: underline;

}

style.css

Page 7: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

7

Page 8: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

8

Решение

Верстка абсолютно независимыми блоками

Основные принципы подхода: •  для описания элемента используется только классы;

•  в таблице стилей нет классов вне блоков;

•  минимальное количество каскадов.

Page 9: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

9

Методология верстки

Верстка абсолютно независимыми блоками

•  Статья Виталия Харисова bit.ly/harisov

Page 10: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

10

Page 11: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

11

Page 12: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

12

Методология верстки

Верстка абсолютно независимыми блоками

•  Статья Виталия Харисова bit.ly/harisov

•  Методология BЕМ bit.ly/bem-info

Page 13: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

13

Методология верстки

Верстка абсолютно независимыми блоками

•  Статья Виталия Харисова bit.ly/harisov

•  Методология BEM bit.ly/bem-info

•  MCSS bit.ly/mcss-info

Page 14: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

14

Методология верстки

Выбор Маркета:

BEM

Page 15: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

15

Архитектура фронтенда Маркета

Бекенды Фронтенд Клиентсайд

Page 16: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

16

Page 17: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

17

Page 18: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

18

Page 19: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

19

Сборка проекта

Page 20: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

20

Page 21: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

21

Инструменты для сборки

•  bem-tools bit.ly/bemtools-info

Page 22: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

22

Инструменты для сборки

•  bem-tools bit.ly/bemtools-info

•  ENB bit.ly/enb-info

Page 23: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

23

Инструменты для сборки

•  bem-tools bit.ly/bemtools-info

•  ENB bit.ly/enb-info

•  Grunt bit.ly/grunt-info

Page 24: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

24

Инструменты для сборки

•  bem-tools bit.ly/bemtools-info

•  ENB bit.ly/enb-info

•  Grunt bit.ly/grunt-info

•  Gulp bit.ly/gulp-info

Page 25: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

25

Инструменты для сборки

Выбор Маркета:

ENB

Page 26: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

26

Инструменты для сборки

Выбор Маркета — ENB.

•  быстрый

Page 27: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

27

Инструменты для сборки

Выбор Маркета — ENB.

•  быстрый

•  ориентирован на BEM-методологию

Page 28: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

28

Инструменты для сборки

Выбор Маркета — ENB.

•  быстрый

•  ориентирован на BЕМ-методологию

•  гибкая система технологий сборки

Page 29: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

29

Работа в команде

Page 30: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

30

Page 31: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

31

Новая рабочая копия

•  shell-скрипт или Make-файл

Page 32: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

32

Новая рабочая копия

•  shell-скрипт или Make-файл

•  Vagrant vagrantup.com

Page 33: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

33

Новая рабочая копия

•  shell-скрипт или Make-файл

•  Vagrant vagrantup.com

•  Своё решение

Page 34: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

34

Новая рабочая копия

Выбор Маркета: Своё решение

Page 35: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

35

Page 36: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

36

Общие компоненты

•  Берем последнюю версию из мастера

Page 37: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

37

Общие компоненты

•  Берем последнюю версию из мастера

•  Фриз на конкретном коммите

Page 38: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

38

Общие компоненты

•  Берем последнюю версию из мастера

•  Фриз на конкретном коммите

•  Семантическое версионирование

•  Разбиение на отдельные компоненты

Page 39: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

39

Общие компоненты

Выбор Маркета: Разбиение на компоненты и их семантическое версионирование

Page 40: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

40

Готовим релиз

Page 41: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

41

Готовим релиз

•  Фриз статики

Page 42: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

42

Готовим релиз

•  Фриз статики

•  Выкладка на продакшн-сервер

Page 43: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

43

Фриз статики

•  Самописный скрипт

Page 44: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

44

Фриз статики

•  Самописный скрипт

•  Grunt/Gulp

Page 45: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

45

Фриз статики

Выбор Маркета: Своё решение

Page 46: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

46

Варианты деплоя

•  Копирование по (S)FTP

Page 47: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

47

Варианты деплоя

•  Копирование по (S)FTP

•  Pull из системы контроля версий

Page 48: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

48

Варианты деплоя

•  Копирование по (S)FTP

•  Pull из системы контроля версий

•  deb-пакет

Page 49: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

49

Варианты деплоя

Выбор Маркета: deb-пакеты

Page 50: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

50

Подробнее о deb-пакетах

•  Лекция «Развёртывание вёрстки»

в ШРИ от Павла Пушкарёва bit.ly/deb-­‐shri

Page 51: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

51

Подробнее о deb-пакетах

•  Лекция «Развёртывание вёрстки»

в ШРИ от Павла Пушкарёва bit.ly/deb-­‐shri

•  Документация bit.ly/deb-info

Page 52: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

52

Подробнее о deb-пакетах

•  Лекция «Развёртывание вёрстки»

в ШРИ от Павла Пушкарёва bit.ly/deb-­‐shri

•  Документация bit.ly/deb-info

•  Как собрать бинарный deb пакет: подробное

HowTo bit.ly/deb-habr

Page 53: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

53

Page 54: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

54

Page 55: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

55

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

Page 56: WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического завода - Дмитрий Поляков

56

Дмитрий Поляков

разработчик интерфейсов Яндекс.Маркета

[email protected]

" polyakovdima

" @dpolyakov

" @marketverstka