SlideShare a Scribd company logo
1 of 56
Download to read offline
1
2 
Разработка фронтенда 
От кузницы до металлургического завода 
Дмитрий Поляков 
разработчик интерфейсов Яндекс.Маркета
3 
Устройство проекта 
и методология верстки
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>
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>
6 
Добавим немного редизайна 
style.css 
a { 
new-style.css 
.newpage a { 
color: blue !important; 
text-decoration: none !important; 
} 
color: #369; 
outline: none; 
text-decoration: underline; 
}
7
Решение 
Верстка абсолютно независимыми 
блоками 
Основные принципы подхода: 
• для описания элемента используется только классы; 
• в таблице стилей нет классов вне блоков; 
• минимальное количество каскадов. 
8
9 
Методология верстки 
Верстка абсолютно независимыми 
блоками 
• Статья Виталия Харисова bit.ly/harisov
10
11
12 
Методология верстки 
Верстка абсолютно независимыми 
блоками 
• Статья Виталия Харисова bit.ly/harisov 
• Методология BЕМ bit.ly/bem-info
13 
Методология верстки 
Верстка абсолютно независимыми 
блоками 
• Статья Виталия Харисова bit.ly/harisov 
• Методология BEM bit.ly/bem-info 
• MCSS bit.ly/mcss-info
14 
Методология верстки 
Выбор Маркета: 
BEM
15 
Архитектура фронтенда Маркета 
Бекенды Фронтенд Клиентсайд
16
17
18
19 
Сборка проекта
20
21 
Инструменты для сборки 
• bem-tools bit.ly/bemtools-info
22 
Инструменты для сборки 
• bem-tools bit.ly/bemtools-info 
• ENB bit.ly/enb-info
23 
Инструменты для сборки 
• bem-tools bit.ly/bemtools-info 
• ENB bit.ly/enb-info 
• Grunt bit.ly/grunt-info
24 
Инструменты для сборки 
• bem-tools bit.ly/bemtools-info 
• ENB bit.ly/enb-info 
• Grunt bit.ly/grunt-info 
• Gulp bit.ly/gulp-info
25 
Инструменты для сборки 
Выбор Маркета: 
ENB
26 
Инструменты для сборки 
Выбор Маркета — ENB. 
• быстрый
27 
Инструменты для сборки 
Выбор Маркета — ENB. 
• быстрый 
• ориентирован на BEM-методологию
28 
Инструменты для сборки 
Выбор Маркета — ENB. 
• быстрый 
• ориентирован на BЕМ-методологию 
• гибкая система технологий сборки
29 
Работа в команде
30
31 
Новая рабочая копия 
• shell-скрипт или Make-файл
32 
Новая рабочая копия 
• shell-скрипт или Make-файл 
• Vagrant vagrantup.com
33 
Новая рабочая копия 
• shell-скрипт или Make-файл 
• Vagrant vagrantup.com 
• Своё решение
34 
Новая рабочая копия 
Выбор Маркета: 
Своё решение
35
36 
Общие компоненты 
• Берем последнюю версию из мастера
37 
Общие компоненты 
• Берем последнюю версию из мастера 
• Фриз на конкретном коммите
38 
Общие компоненты 
• Берем последнюю версию из мастера 
• Фриз на конкретном коммите 
• Семантическое версионирование 
• Разбиение на отдельные компоненты
39 
Общие компоненты 
Выбор Маркета: 
Разбиение на 
компоненты и их 
семантическое 
версионирование
40 
Готовим релиз
41 
Готовим релиз 
• Фриз статики
42 
Готовим релиз 
• Фриз статики 
• Выкладка на продакшн-сервер
43 
Фриз статики 
• Самописный скрипт
44 
Фриз статики 
• Самописный скрипт 
• Grunt/Gulp
45 
Фриз статики 
Выбор Маркета: 
Своё решение
46 
Варианты деплоя 
• Копирование по (S)FTP
47 
Варианты деплоя 
• Копирование по (S)FTP 
• Pull из системы контроля версий
48 
Варианты деплоя 
• Копирование по (S)FTP 
• Pull из системы контроля версий 
• deb-пакет
49 
Варианты деплоя 
Выбор Маркета: 
deb-пакеты
50 
Подробнее о deb-пакетах 
• Лекция «Развёртывание вёрстки» 
в ШРИ от Павла Пушкарёва bit.ly/deb-­‐shri
51 
Подробнее о deb-пакетах 
• Лекция «Развёртывание вёрстки» 
в ШРИ от Павла Пушкарёва bit.ly/deb-­‐shri 
• Документация bit.ly/deb-info
52 
Подробнее о deb-пакетах 
• Лекция «Развёртывание вёрстки» 
в ШРИ от Павла Пушкарёва bit.ly/deb-­‐shri 
• Документация bit.ly/deb-info 
• Как собрать бинарный deb пакет: подробное 
HowTo bit.ly/deb-habr
53
54
55 
Спасибо за внимание!
56 
Дмитрий Поляков 
разработчик 
интерфейсов 
Яндекс.Маркета 
dima@my-html.ru 
" polyakovdima 
" @dpolyakov 
" @marketverstka

More Related Content

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

Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
Yandex
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Yandex
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщика
mcslayer
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
Ontico
 

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

Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Презентация «WebMarkupMin – HTML-минификатор для платформы .NET» с MskDotNet ...
Презентация «WebMarkupMin – HTML-минификатор для платформы .NET» с MskDotNet ...Презентация «WebMarkupMin – HTML-минификатор для платформы .NET» с MskDotNet ...
Презентация «WebMarkupMin – HTML-минификатор для платформы .NET» с MskDotNet ...
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщика
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Pythonic way of using BTRFS features
Pythonic way of using BTRFS featuresPythonic way of using BTRFS features
Pythonic way of using BTRFS features
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven development
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Документирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
Документирование блоков. Раскрываем все плюсы — Инна Белая, ЯндексДокументирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
Документирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
 
Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePoint
 

More from GeeksLab Odessa

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
GeeksLab Odessa
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
GeeksLab Odessa
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
GeeksLab Odessa
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
GeeksLab Odessa
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
GeeksLab Odessa
 

More from GeeksLab Odessa (20)

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
 

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