50
Организация frontend-разработки на крупном проекте Кузнецов Дмитрий 01

«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

  • Upload
    2-

  • View
    644

  • Download
    13

Embed Size (px)

DESCRIPTION

Как создать Front End-команду для высоконагруженного проекта? Спикер расскажет, как можно выстроить эффективный процесс фронтенд-разработки с упором на технические аспекты: — Команда фронтенд-разработчиков. Зоны ответственности между теми, кто программирует UI (верстальщики), и теми, кто отвечает за бизнес-логику (Javascript-программисты). Идеальный состав команды. — Настроенный технологический процесс. Модульная организация (подготовка дизайна → разработка формата данных → создание шаблона → навешивание событий → тесты). — Разработка вместе с тестированием Unit-/DOM-тесты и подход PixelPerfect. — Вёрстка независимыми блоками и встроенный в приложение режим для вёрстки блоков.

Citation preview

Page 1: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Организация frontend-разработкина крупном проектеКузнецов Дмитрий

01

Page 2: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Обо мне

Новосибирск 2GIS

Online Lead Frontend

02

Page 3: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Давным-давно

03

Page 4: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

04

Page 5: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Сейчас же

05

Page 6: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

06

Page 7: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Много всякогоразного фронтенда

07

Page 8: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Проблемы

1. Анимация на каждый чих

2. Бизнес-логика на клиенте

3. Высокая связность внутри frontend-команды

08

Page 9: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Да ладно ✌

09

Page 10: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

10

Page 11: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Нельзя так просто взять

и переиспользовать процессы разработки backend-приложений для frontend-приложений!

11

Page 12: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Команда

Процесс ☆

Процесс

Инструмент

12

Page 13: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Frontend

Design

TestingManagement

Java

Scrip

t

Команда

13

Page 14: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Frontend-разработчик

14

Page 15: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

JavaScript-программист

15

Page 16: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Все другие ♘♙♖

16

Page 17: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Команда

Процесс ☆

Процесс

Инструмент

17

Page 18: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Процесс

1. Дизайн

2. Разработка

3. Тестирование

18

Page 19: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

1. Дизайн

19

Page 20: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

2. Разработка

— Конвертация psd в html / css / js

— Смотрите в следующих слайдах... DOM-тесты спасают вёрстку!

20

Page 21: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

3. Тестирование

— Функциональные тесты

21

Page 22: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Процесс

1. Дизайн

2. Разработка

3. Тестирование

22

Page 23: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Передача контекста23

Page 24: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Процесс

1. Дизайн

2. Разработка

3. Тестирование

24

Page 25: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

1. Определение модуля FE JS

2. Формат данных FE

3. HTML-шаблон FE

4. Вёрстка FE

5. Анимация FE

6. DOM-тесты FE JS

7. Внутримодульная логика JS

8. Интеграция модуля JS

9. Ревью FE JS

25

Page 26: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

26

Page 27: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

1. Определение модуля27

Page 28: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

2. Формат данных

{

title: ITmozg.ru, Информационный сайт

address: Обуховской обороны проспект, 70 к2

attrs: Наличный расчет, Visa, MasterCard, Безналичный расчет, MaestroCard

status: Открыто

}

28

Page 29: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

3. HTML-шаблон

<article class="mini-card">

<h1 class="mini-card__title"> {{title}} </h1>

<address class="mini-card__address"> {{address}} </address>

<div class="mini-card__attrs"> {{attrs}} </div>

<div class="mini-card__status"> {{status}} </div>

</article>

29

Page 30: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

4. Верстка

.mini-card {

display: flex;

justify-content: center;

align-items: center;

flex-direction: column;

-webkit-user-experience: fantastic;

background: url(assets/baron.svg);

}

30

Page 31: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Проверяем верстку

Вёрстка

31

Page 32: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

5. Анимация32

Page 33: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

33

Page 34: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

6. DOM-тесты

— Наличие важных элементов, классов и стилей

— Отработка скриптов по событиям

— Показ или скрытие каких-то элементов при определенных условиях

— ...

34

Page 35: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Пример DOM-тестов

it('Не заполнено имя', function() {

$('.feedback__name').empty();

$('.feedback__form').trigger('submit');

var hasErrCls = $('.feedback__name').hasClass('error');

assert(hasErrCls, 'Выставлен класс ошибки');

});

01.

02.

03.

04.

05.

06.

35

Page 36: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Контентные тесты36

Page 37: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

7. Внутримодульная логика37

Page 38: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

8. Интеграция модуля38

Page 39: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

9. Ревью39

Page 40: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

1. Определение модуля FE JS

2. Формат данных FE

3. HTML-шаблон FE

4. Вёрстка FE

5. Анимация FE

6. DOM-тесты FE JS

7. Внутримодульная логика JS

8. Интеграция модуля JS

9. Ревью FE JS

40

Page 41: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Команда

Процесс ☆

Процесс

Инструмент

41

Page 42: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Передача верстки в разработку1. Определение модуля FE JS

2. Формат данных FE

3. HTML-шаблон FE

4. Вёрстка FE

5. Анимация FE

6. DOM-тесты FE

7. Ревью FE

1. Внутримодульная логика JS

2. Интеграция модуля JS

3. Ревью JS

42

Page 43: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Процесс

Дизайн

Разработка

Тестирование

Дизайн

Разработка

Тестирование

Дизайн

Разработка

Тестирование

43

Page 44: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Команда

Процесс ☆

Процесс

Инструмент

44

Page 45: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

45

Page 46: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

46

Page 47: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

47

Page 48: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Команда

Процесс ☆

Процесс

Инструмент

48

Page 49: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Резюме

— Frontend-разработчик и javascript-программист

— Передача контекста — самое важное в процессе

— Делайте инструменты под себя

49

Page 50: «Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов

Вопросы?

[email protected]

github.com/diokuz

@diokuz

50