Фронтенд разработка без боли

101
КАК ПИСАТЬ ФРОНТЕНД БЕЗ проблем и боли Wi-Fi name: kl10tch pass: raster-noton

Upload: anton-piskunov

Post on 15-Jun-2015

1.252 views

Category:

Internet


0 download

DESCRIPTION

Субъективная точка зрения на фронтенд разработку. Площадка: IT-бар КЛЮЧ, https://vk.com/event69759919 Видео с доклада: https://www.youtube.com/watch?v=pyAYbbDJjPo

TRANSCRIPT

Page 1: Фронтенд разработка без боли

КАК ПИСАТЬ ФРОНТЕНД БЕЗпроблем и боли

Wi-Finame: kl10tch

pass: raster-noton

Page 2: Фронтенд разработка без боли

РЕБЯТА ВАС МНОГО!1. Junior? 2. Middle/Senior/Lead? 3. Backend? 4. Design?

Page 3: Фронтенд разработка без боли

АНТОН ПИСКУНОВс 2008 - фриланс

с 2011 - веб-студии с 2012 - хайлоад

!более трехсот завершенных проектов несколько десятков эпичных факапов

!опыт своего бизнеса, трижды

a-piskunov.ru [email protected]

СЕЙЧАС

тимлид

scalecastle.ioидеолог, евангелист

Page 4: Фронтенд разработка без боли

ЗАЧЕМ МЫ ЗДЕСЬМетодологии разработки

Приёмы скоростной разработки

Организация кода

Новые технологии

Обзор фреймворков

bem

web componentsсборка

оптимизацииcloudflare

gulp

grunt

angularjs

опять все тормозит

я так привык

sass

lesses5

amdwtf?!

cdn http

twitter flight

shim/sham

agile

быстрее!

Page 5: Фронтенд разработка без боли

ВЕРИШЬ ПРЕЗЕНТАЦИЯМ НА СЛОВО?

Page 6: Фронтенд разработка без боли

В ОДНОМ ИЗ ПРОЕКТОВ (С)

Палево

NDA

Page 7: Фронтенд разработка без боли

ИСТОРИЯКак мы писали веб раньше

Серверная логика

Серверный рендеринг

Клиент «отдыхает»

Page 8: Фронтенд разработка без боли

ИСТОРИЯПроблемы которые у нас возникали

Организация кода

Продолжительность загрузки

Не отзывчивый интерфейс

Скудность возможностей

Сайт не был приложением

Page 9: Фронтенд разработка без боли

ОРГАНИЗАЦИЯ КОДАJavaScript

Спагетти-код (jquery-like)

Месиво из событий

Тонны коллбэков

JS - шаблонизаторы

Управление зависимостями

Page 10: Фронтенд разработка без боли

ОРГАНИЗАЦИЯ КОДАCSS

Месиво из селекторов

Низкая читабельность

Проблемы с переопределением

Кроссбраузерность

Управление зависимостями

Page 11: Фронтенд разработка без боли

ПРОДОЛЖИТЕЛЬНОСТЬ ЗАГРУЗКИ

Page 12: Фронтенд разработка без боли

ПРОДОЛЖИТЕЛЬНОСТЬ ЗАГРУЗКИ

• Вес статики • Количество статики • Количество запросов • «Пинг» до серверов

• Отсутствие модульности • Всё своё тащу с собой • Какая минификация?

Page 13: Фронтенд разработка без боли

ПРОБЛЕМЫ БЫЛИ

Организация кода

Продолжительность загрузки

Не отзывчивый интерфейс

Скудность возможностей

Сайт не был приложением

Page 14: Фронтенд разработка без боли

СУПЕРМЕН СПЕШИТ НА ПОМОЩЬ

Page 15: Фронтенд разработка без боли

BEMТолько без религии!

Object Oriented CSSAtomic CSS

SMACSS…чтоугодно…

Page 16: Фронтенд разработка без боли

BEMГлавное - четкие, прописанные на бумаге правила,

доступные для каждого члена команды

Мы договариваемся о префиксах и живем дружно

l - уровень b - блок e - элемент js - для JS __ - модификатор

Page 17: Фронтенд разработка без боли

BEM

Открытая документация

Относительная простота

Хорошо распространен

Не навязчив

Page 18: Фронтенд разработка без боли

ЧТО ПРИНЕС СУПЕРМЕНЧеткое соглашение об именовании

Page 19: Фронтенд разработка без боли

PREPROCESSINGМы голыми танцевали под луной, когда LESS и SASS пришли в наш мир

Нафига оно мне?

• Вложенность селекторов • Переменные • Операторы, вычисления • Миксины • Вы ничего не теряете • Вы следуете принципу DRY

Page 20: Фронтенд разработка без боли

PREPROCESSING

Page 21: Фронтенд разработка без боли

PREPROCESSING

Page 22: Фронтенд разработка без боли

PREPROCESSING

Page 23: Фронтенд разработка без боли

ЧТО ПРИНЕС СУПЕРМЕНЧеткое соглашение об именованииУдобный способ следовать соглашениюНиштяки для быстрой разработки

Page 24: Фронтенд разработка без боли

WEB COMPONENTSЧто мы можем использовать?

• Шаблоны • Декораторы • Теневой DOM • Кастомные элементы • Импорты

Page 25: Фронтенд разработка без боли

WEB COMPONENTSЧто мы можем использовать?

• Шаблоны • Кастомные элементы

Page 26: Фронтенд разработка без боли

ПОЧЕМУ ТАК МАЛО?

Page 27: Фронтенд разработка без боли

КАК НЕ МОЖЕМ?!

Page 28: Фронтенд разработка без боли
Page 29: Фронтенд разработка без боли

WEB COMPONENTSЧто мы можем использовать

на самом деле

• Шаблоны • Кастомные элементы • Идеологию

Page 30: Фронтенд разработка без боли
Page 31: Фронтенд разработка без боли
Page 32: Фронтенд разработка без боли
Page 33: Фронтенд разработка без боли
Page 34: Фронтенд разработка без боли
Page 35: Фронтенд разработка без боли

ЧТО ПРИНЕС СУПЕРМЕНЧеткое соглашение об именованииУдобный способ следовать соглашениюНиштяки для быстрой разработки

Возможность не превратить проект в прах и говно через полгода активного кодинга

Page 36: Фронтенд разработка без боли

ОРГАНИЗАЦИЯ КОДАCSS

Месиво из селекторов

Низкая читабельность

Проблемы с переопределением

Кроссбраузерность

Управление зависимостями

Page 37: Фронтенд разработка без боли

КАКИЕ ПРОБЛЕМЫ РЕШИЛ СУПЕРМЕН

Месиво из селекторовНизкая читабельность

Проблемы с переопределением

CSS

Page 38: Фронтенд разработка без боли

ОРГАНИЗАЦИЯ КОДАJavaScript

Спагетти-код (jquery-like)

Месиво из событий

Тонны коллбэков

JS - шаблонизаторы

Управление зависимостями

Page 39: Фронтенд разработка без боли

КАКИЕ ПРОБЛЕМЫ РЕШИЛ СУПЕРМЕН

JavaScript

Спагетти-код (jquery-like)Месиво из событий

Page 40: Фронтенд разработка без боли

ЗАВИСИМОСТИ

В этом слове столько же боли как в слове «лего» или «угол мебели»

- Парни, а какой версии у нас jQuery? - 1.8 кажется. Или 1.9 Не помню, спроси Диму.

Page 41: Фронтенд разработка без боли

ЗАВИСИМОСТИПочему так важно контролировать их?

• Вы всегда точно знаете какая версия у либы • Вы вовремя обновляетесь (фичи, безопасность) • Инструмент позволяет не таскать их в Git • Деплой становится проще!

Page 42: Фронтенд разработка без боли

ЗАВИСИМОСТИНо будьте осторожны!

Page 43: Фронтенд разработка без боли

BOWERТут как с BEM’ом, главное без фанатизма

bower.iocomponent.io

NPM…чтоугодно…

Page 44: Фронтенд разработка без боли

BOWER

Открытая документация

Хорошо распространен

Большой список библиотек

Можно вертеть как хочешь

Page 45: Фронтенд разработка без боли

BOWER

1. Установка npm install bower !2. Работаем! bower init

Page 46: Фронтенд разработка без боли

BOWER

Конфиг файл .bowerrc

Page 47: Фронтенд разработка без боли

BOWER INSTALL -S JQUERY

Page 48: Фронтенд разработка без боли

ЕЩЕ НЕМНОГО ПАКЕТОВ

Page 49: Фронтенд разработка без боли

ЧТО ПРИНЕС СУПЕРМЕНЧеткое соглашение об именованииУдобный способ следовать соглашениюНиштяки для быстрой разработки

Возможность не превратить проект в прах и говно через полгода активного кодингаЧеткий контроль над 3rd-party

Еще ништяки для быстрой разработки

Page 50: Фронтенд разработка без боли

КАКИЕ ПРОБЛЕМЫ РЕШИЛ СУПЕРМЕН

JavaScript && CSS

Управление зависимостями

Page 51: Фронтенд разработка без боли

ПРОБЛЕМЫ БЫЛИ

Организация кода

Продолжительность загрузки

Не отзывчивый интерфейс

Скудность возможностей

Сайт не был приложением

Page 52: Фронтенд разработка без боли

АНТРАКТ?

Page 53: Фронтенд разработка без боли

ОПТИМИЗАЦИЯ

Сократить вес кода

Сократить количество запросов

Уменьшить расстояние до пользователя

Шорт-лист для сайта улитки

Page 54: Фронтенд разработка без боли

СБОРКА ПРОЕКТА

• Задействовать зависимости • Скомпилировать SASS/LESS • Минифицировать CSS • Минифицировать JS

Page 55: Фронтенд разработка без боли

СБОРКА ПРОЕКТА• Задействовать зависимости • Скомпилировать SASS/LESS • Минифицировать CSS • Минифицировать JS • Прогнать CSSLint/JSLint • Оптимизировать изображения • Минифицировать HTML • Запустить тесты

Page 56: Фронтенд разработка без боли

GULPJSГлавное не используйте Ant

brunchgrunt

…чтоугодно…broccoli

Page 57: Фронтенд разработка без боли

GULPJS

Открытая документация

Можно вертеть как хочешь

Полноценное программирование

Page 58: Фронтенд разработка без боли
Page 59: Фронтенд разработка без боли
Page 60: Фронтенд разработка без боли
Page 61: Фронтенд разработка без боли

CONTENT DELIVERY

Весь контент должен быть доступен, битый линк на ресурс создаст неиллюзорный абзац

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

Page 62: Фронтенд разработка без боли

CONTENT DELIVERYПервая линия обороны

Nginx, gzip, cache

Riak, Redis, Memcache O_o

Page 63: Фронтенд разработка без боли

CONTENT DELIVERYВторая линия обороны

CloudFlare

Clodo, Selectel

MaxCDN

NGENIX

Page 64: Фронтенд разработка без боли

ЧТО ПРИНЕС СУПЕРМЕНДоступность фронтенда

Скорость загрузки ассетов

Page 65: Фронтенд разработка без боли

ИДЕОЛОГИЯКак мы работаем с данными?

Page 66: Фронтенд разработка без боли

ИСТОРИЯКак мы писали веб раньше

Серверная логика

Серверный рендеринг

Клиент «отдыхает»

Page 67: Фронтенд разработка без боли

ИДЕОЛОГИЯКак мы работаем с данными?

Зачем таскать данные которые могут нам не пригодится при каждом рендере

страницы?

Давайте будем более интерактивны

Page 68: Фронтенд разработка без боли

ИДЕОЛОГИЯSPA: Single Page Application

Работаем с поведением пользователя

Загружаем данные on-demand

Снижаем объём загружаемого HTML с помощью API и шаблонизации

Page 69: Фронтенд разработка без боли

ДАННЫЕКак работать с данными лучше?

Ради бога выкиньте RPC и тем более XML

Работайте с актуальной парадигмой REST и JSON

Кэш как всегда всех спасёт

Page 70: Фронтенд разработка без боли

ДАННЫЕREST

Нет серебрянной пули - вы можете видоизменять его под свои требования и задачи

GET domain.tld/api/usersGET domain.tld/api/users/listGET domain.tld/api/users?list

Page 71: Фронтенд разработка без боли

ДАННЫЕREST

Разделите внешнее API и внутреннее API на разные приложения

С умом используйте CORS

GET api.domain.tld/users

GET <any>.domain.tld/users

Page 72: Фронтенд разработка без боли

ЧТО ПРИНЕС СУПЕРМЕНДоступность фронтенда

Скорость загрузки ассетов

Удобство работы с данными

Скорость загрузки приложения

Page 73: Фронтенд разработка без боли

ШАБЛОНИЗАЦИЯЗачееем топтаааать мою любооовь, её итак почтиии не стааало.

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

Другой подход диктует другие правила игры

Page 74: Фронтенд разработка без боли

ШАБЛОНИЗАЦИЯ

Таблица на 100 строк. Зачем таскать столько HTML?

Давайте не будем ждать серверных, мы хотим писать свою логику уже сейчас

Page 75: Фронтенд разработка без боли

ШАБЛОНИЗАЦИЯangularjs mustache handlebars

jade underscore

twig.js

Page 76: Фронтенд разработка без боли

ЧТО ПРИНЕС СУПЕРМЕНДоступность фронтенда

Скорость загрузки ассетов

Удобство работы с данными

Уменьшение трафика

Скорость загрузки приложения

Page 77: Фронтенд разработка без боли

САЙТ ТУРБО-УЛИТКА

Page 78: Фронтенд разработка без боли

ПРОБЛЕМЫ БЫЛИ

Организация кода

Продолжительность загрузки

Не отзывчивый интерфейс

Скудность возможностей

Сайт не был приложением

Page 79: Фронтенд разработка без боли

ПРОБЛЕМЫ БЫЛИ

Организация кода

Продолжительность загрузки

Не отзывчивый интерфейс

Скудность возможностей

Сайт не был приложением

Page 80: Фронтенд разработка без боли

ВОЗМОЖНОСТИЧто мы теряем?

Возможности CSS3

Возможности ECMAScript*

Синтаксический сахар

Оптимальные алгоритмы

Page 81: Фронтенд разработка без боли

ПОЛИФИЛЛЫhtml5please.com/#polyfill

хранилища

web components (polymer)

web sockets (socket.io)

Page 82: Фронтенд разработка без боли

ШИМЫgithub.com/es-shims

Ништяки из ECMAScript 5 и ECMAScript 6 уже сейчас

github.com/paulmillr/es6-shim

Page 83: Фронтенд разработка без боли

БИБЛИОТЕКИunderscorejs

Больше возможностей, больше оптимальных алгоритмов

lo-dash

Page 84: Фронтенд разработка без боли

ПРЕПРОЦЕССОРЫ

HTML Slim Haml Jade

CSS SASS SCSS LESS

JS CoffeeScript TypeScript LiveScript

Page 85: Фронтенд разработка без боли

ФРЕЙМВОРКИ

Основательная разработка

Пользовательское приложение

«Админка»

Page 86: Фронтенд разработка без боли

ФРЕЙМВОРКИОсновательная разработка

Vanilla JS

Page 87: Фронтенд разработка без боли

ФРЕЙМВОРКИОсновательная разработка

Vanilla JS

Backbone / Marionette

Underscore

Page 88: Фронтенд разработка без боли

ФРЕЙМВОРКИОсновательная разработка

Vanilla JS

es5-shim

Handlebars

Page 89: Фронтенд разработка без боли

ФРЕЙМВОРКИВ чём соль?

Есть стартовый код - нужно меньше велосипедов

Полная свобода действий, вас ни что не ограничивает

Придется много думать

Page 90: Фронтенд разработка без боли

ФРЕЙМВОРКИПользовательское приложение

Twitter Flight

es5-shim

Handlebars

Page 91: Фронтенд разработка без боли

ФРЕЙМВОРКИВ чём соль?

Четкое workflow для разработчика

Event-Driven - просто песня для приложения с тоннами действий

Думать можно меньше

Page 92: Фронтенд разработка без боли

ФРЕЙМВОРКИ«Админка»

Angular JS

Встроенный шаблонизатор

jQuery Lite

Некоторое количество готовых велосипедов

Page 93: Фронтенд разработка без боли

ФРЕЙМВОРКИВ чём соль?

Четкое workflow для разработчика

Думать придется очень много

Обратная сторона - резкая боль в области поясницы при попытки отойти

от этого workflowВозможность прийти к авто-генерации

Page 94: Фронтенд разработка без боли

ПРОБЛЕМЫ БЫЛИ

Организация кода

Продолжительность загрузки

Не отзывчивый интерфейс

Скудность возможностей

Сайт не был приложением

Page 95: Фронтенд разработка без боли

ИСТОРИЯКак мы писали веб раньше

Серверная логика

Серверный рендеринг

Клиент «отдыхает»

Page 96: Фронтенд разработка без боли

НАШИ ДНИКак мы делаем сейчас

Клиентская логика

Клиентский рендеринг

Клиент «пашет»

Сервер «отдыхает»

Page 97: Фронтенд разработка без боли

PROBLEMS?Нет проблем! Всем няшку!

Код чистый и понятныйФичи пишутся,

а баги находятся, быстро

Интерфейс молниеносен и автономен

Сайт - является полноценным приложением

Page 98: Фронтенд разработка без боли

КУДА БЕЖАТЬ

Page 99: Фронтенд разработка без боли

WHAT TIME IS IT?!

Page 100: Фронтенд разработка без боли

ФИДБЭЭЭЭК!

Если вам не понравилось - обязательно подойдите и скажите мне об этом.

Совсем круто будет - если вы предложите

что можно улучшить.

Анонимно: ask.fm/psknv

Page 101: Фронтенд разработка без боли

ДО ВСТРЕЧИ!

vk.com/smile42ru skype: smile42ru

tel: +7 921 569 49 74

a-piskunov.ru

Редактор в скриншотах: atom.io

Спасибо! Севе Иванову Антону Виллеру Сергею Смирнову Саше Чистякову