SlideShare a Scribd company logo
Будущее
шаблонизаторов
Алексей Иванов, Злые Марсиане
1
2
План выступления
1.  Я сею хаос и смуту, погружаю всех в депрессию.
2.  Я добиваюсь осознания несовершенства мира.
3.  ???
4.  Кто‑то пишет новые инструменты которые решают мои проблемы.
3
Условия в которых появлялись
инструменты для разработки
сайтов
—  Маленький объем проекта – 5-10 типовых страниц.
—  Мало реиспользуемых элементов и они простые.
—  Пишется одним разработчиком за пару дней.
—  Сдается один раз и не дорабатываются в будущем.
Такому проекту не нужно ни инструментов, ни методологий
4
Что изменилось сейчас
—  Количество страниц увеличивается до 30–40–50.
—  Состоит из большого набора повторяющихся, реиспользуемых
элементов.
—  Над проектом работает несколько разработчиков.
—  Проект делается и поддерживается годами.
Без инструментов и методологий вы сойдете с ума
5
Иструменты разработки
—  CSS-методологии: БЭМ, OOCSS, SMACSS.
—  Пре- и постпроцессоры: SASS, Less, Stylus, PostCSS.
—  Диалекты JS: CoffeeScript, TypeScript, ES6.
—  Модульные системы: CommonJS, RequireJS.
—  Минификаторы: UglifyJS, clean-css.
—  Системы сборки: Grunt, Gulp, Webpack.
6
Две основных линии развития
проектов
—  SPA (Single Page Application) приложения.
—  Крупные интернет‑магазины, каталоги и сайты СМИ.
7
Чем они отличаются
SPA Не-SPA
Индексация поисковиками Не нужна Нужна
Количество страниц Среднее Большое
Динамические элементы Много Мало
8
SPA развиваются дальше
—  Полноценные компонтенты (React).
—  Полная изоляция стилей + автоматическое удаление
неиспользуемых и объединение по содержимому (CSS Modules,
Free Style).
—  Hot reload всего и вся (WebPack + React HotReload + Redux).
—  Собрка по бандлам (WebPack).
9
Обычные сайты – нет
—  Для каждого языка программирования свой набор
шаблонизаторов.
—  Если какие‑то шаблоны надо использовать на клиенте – самый
простой способ копипаст.
—  Шаблонизаторы никак не связаны со стилями и логикой.
—  Подключение и сборка всех видов ресурсов идет отдельно
из без возможности автоматического удаления неиспольземого
кода.
—  Никакого hot reload для страниц и автоматических бандлов.10
Гипотеза
Вслед за сборкой ассетов, которые полностью ушли в Node.js,
шаблонизаторы для больших проектов тоже уйдут туда.
Что с этим делать?
11
Почему Node.js?
—  В большинстве больших проектов уже и так есть Node.js
для сборки ассетов.
—  Не надо учить новый язык.
—  Шаблоны можно использовать и на сервере и клиенте.
—  Достаточно сделать и поддерживать одну реализацию
шаблонизатора под все бэкенд‑платформы и языки.
—  HTML/JS/CSS должны обрабатываться в одном месте, чтобы можно
было делать полноценные компоненты.
12
Чего не хватает сейчас
для полного счастья?
1.  Интеграции с бэкендом.
2.  Компонентного шаблонизатора который умеет хорошо работать
с сервером.
13
Стандартный бэкенд
14
Интеграция с бэкендом
1.  Express-сервер и API.
2.  Стандартный шаблонизатор в Ruby/Python/PHP делает структуру
страницы.
3.  Ruby/Python/PHP отправляют json с данными в Node.js
приложение.
15
Express-сервер и API
Интеграция с бэкендом
16
Ruby/Python/PHP делает структуру,
Node.js рендерит
Интеграция с бэкендом
17
Ruby/Python/PHP отправляют json
с данными в Node.js
Интеграция с бэкендом
18
Почему не стандартный React?
—  Куча неиспользуемого js (надо тащить с собой все шаблоны, чтобы
работали события).
—  Большой overhead в html из‑за кучи реактовых аттрибутов.
Серверный шаблонизатор
19
React 0.14 и вынесенные отдельно
рэндеры
—  В React 0.14 часть отвечающая за рэндер в HTML/ObjectiveC
вынесено отдельно от части отвечающей за описание
компонентов.
—  Можно написать свой рендер‑движок, который будет добавлять
react-attribute'ы только к тем элементам (и их детям) у которых есть
динамическое поведение.
—  Можно делать js-бандл только из отобранных по такому принципу
компонентов.
Серверный шаблонизатор
20
Заключение
—  Будущее за переездом шаблонов в Node.js и компонентными
шаблонизаторами.
—  Для того чтобы переход состоялся нужно два недостающих куска
технологий.
—  Каждый из них отделим и самоценен.
—  Надо писать.
21
Контакты
Github: github.com/iadramelk
Twitter: @iadramelk
evilmartians.com / @evilmartians

More Related Content

What's hot

JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)
10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)
10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)
2ГИС Технологии
 
10 способов как не надо тестировать высоконагруженный веб-сервис
10 способов как не надо тестировать высоконагруженный веб-сервис10 способов как не надо тестировать высоконагруженный веб-сервис
10 способов как не надо тестировать высоконагруженный веб-сервис
SQALab
 
Доклад не про React
Доклад не про ReactДоклад не про React
Доклад не про React
Anton Winogradov
 
Дизайн. Глазами и руками разработчика
Дизайн. Глазами и руками разработчикаДизайн. Глазами и руками разработчика
Дизайн. Глазами и руками разработчика
Anton Winogradov
 
Михаил Трошев "Школа разработки интерфейсов"
Михаил Трошев "Школа разработки интерфейсов"Михаил Трошев "Школа разработки интерфейсов"
Михаил Трошев "Школа разработки интерфейсов"
Yandex
 
Компонентный дизайн
Компонентный дизайнКомпонентный дизайн
Компонентный дизайн
M18
 
03 positive technologies
03 positive technologies03 positive technologies
03 positive technologiesGoudron1979
 
Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.
Anton Winogradov
 
Aрхитектура дизайн-систем
Aрхитектура дизайн-системAрхитектура дизайн-систем
Aрхитектура дизайн-систем
Anton Winogradov
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworkssigmaray
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Ontico
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия ПучнинаGeeksLab Odessa
 
Игра "Путь в Силиконовую долину"
Игра "Путь в Силиконовую долину"Игра "Путь в Силиконовую долину"
Игра "Путь в Силиконовую долину"Margaret
 
Общие технологии между несколькими проектами в Яндексе
Общие технологии между несколькими проектами в ЯндексеОбщие технологии между несколькими проектами в Яндексе
Общие технологии между несколькими проектами в Яндексе
Yandex
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
Vladimir Malyk
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
DevGAMM Conference
 
Дизайн и разработка фронтенда
Дизайн и разработка фронтендаДизайн и разработка фронтенда
Дизайн и разработка фронтенда
Yandex
 
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис РечкуновJSib
 

What's hot (20)

JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
 
10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)
10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)
10 способов как не надо тестировать высоконагруженный сервис (SQA Days 2013)
 
10 способов как не надо тестировать высоконагруженный веб-сервис
10 способов как не надо тестировать высоконагруженный веб-сервис10 способов как не надо тестировать высоконагруженный веб-сервис
10 способов как не надо тестировать высоконагруженный веб-сервис
 
Доклад не про React
Доклад не про ReactДоклад не про React
Доклад не про React
 
Дизайн. Глазами и руками разработчика
Дизайн. Глазами и руками разработчикаДизайн. Глазами и руками разработчика
Дизайн. Глазами и руками разработчика
 
Михаил Трошев "Школа разработки интерфейсов"
Михаил Трошев "Школа разработки интерфейсов"Михаил Трошев "Школа разработки интерфейсов"
Михаил Трошев "Школа разработки интерфейсов"
 
02 docsvision
02 docsvision02 docsvision
02 docsvision
 
Компонентный дизайн
Компонентный дизайнКомпонентный дизайн
Компонентный дизайн
 
03 positive technologies
03 positive technologies03 positive technologies
03 positive technologies
 
Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.
 
Aрхитектура дизайн-систем
Aрхитектура дизайн-системAрхитектура дизайн-систем
Aрхитектура дизайн-систем
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
 
Игра "Путь в Силиконовую долину"
Игра "Путь в Силиконовую долину"Игра "Путь в Силиконовую долину"
Игра "Путь в Силиконовую долину"
 
Общие технологии между несколькими проектами в Яндексе
Общие технологии между несколькими проектами в ЯндексеОбщие технологии между несколькими проектами в Яндексе
Общие технологии между несколькими проектами в Яндексе
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
 
Дизайн и разработка фронтенда
Дизайн и разработка фронтендаДизайн и разработка фронтенда
Дизайн и разработка фронтенда
 
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
 

Similar to Будущее шаблонизаторов

Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Yandex
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
ITCrowd Almaty
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
00012 georgii
00012 georgii00012 georgii
00012 georgii
ssuser8fac56
 
10 мифов о WordPress
10 мифов о WordPress10 мифов о WordPress
10 мифов о WordPress
Alexey Vidanov
 
презентация компании
презентация компаниипрезентация компании
презентация компанииDmitry Galakhov
 
От пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лабораторииОт пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лаборатории
Yandex
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
Anton Ignatov
 
От энтузиаста к веб разработчику
От энтузиаста к веб разработчикуОт энтузиаста к веб разработчику
От энтузиаста к веб разработчику
Nikolay Mironov
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
sandy97
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
Denis Izmaylov
 
Основы разработки сайтов by Uplab
Основы разработки сайтов by UplabОсновы разработки сайтов by Uplab
Основы разработки сайтов by Uplab
Digital-агентство Uplab
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
ADN Digital Studio
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Magecom UK Limited
 
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)Ontico
 
Web20 from zero
Web20 from zeroWeb20 from zero
Web20 from zeroqweasdrty
 
введение в SharePoint
введение в SharePointвведение в SharePoint
введение в SharePoint
Ivan Padabed
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.js
Kirill Danilov
 

Similar to Будущее шаблонизаторов (20)

Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
00012 georgii
00012 georgii00012 georgii
00012 georgii
 
10 мифов о WordPress
10 мифов о WordPress10 мифов о WordPress
10 мифов о WordPress
 
презентация компании
презентация компаниипрезентация компании
презентация компании
 
От пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лабораторииОт пояса с инструментами к полноценной лаборатории
От пояса с инструментами к полноценной лаборатории
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
От энтузиаста к веб разработчику
От энтузиаста к веб разработчикуОт энтузиаста к веб разработчику
От энтузиаста к веб разработчику
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
 
Основы разработки сайтов by Uplab
Основы разработки сайтов by UplabОсновы разработки сайтов by Uplab
Основы разработки сайтов by Uplab
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
 
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
 
Web20 from zero
Web20 from zeroWeb20 from zero
Web20 from zero
 
введение в SharePoint
введение в SharePointвведение в SharePoint
введение в SharePoint
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.js
 

More from Alexey Ivanov

Writing code for people
Writing code for peopleWriting code for people
Writing code for people
Alexey Ivanov
 
REST to GraphQL migration: Pros, cons and gotchas
REST to GraphQL migration: Pros, cons and gotchasREST to GraphQL migration: Pros, cons and gotchas
REST to GraphQL migration: Pros, cons and gotchas
Alexey Ivanov
 
Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpack
Alexey Ivanov
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov
 
ДАМП 2015 Екатеринбург
ДАМП 2015 ЕкатеринбургДАМП 2015 Екатеринбург
ДАМП 2015 Екатеринбург
Alexey Ivanov
 

More from Alexey Ivanov (6)

Writing code for people
Writing code for peopleWriting code for people
Writing code for people
 
REST to GraphQL migration: Pros, cons and gotchas
REST to GraphQL migration: Pros, cons and gotchasREST to GraphQL migration: Pros, cons and gotchas
REST to GraphQL migration: Pros, cons and gotchas
 
Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpack
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
ДАМП 2015 Екатеринбург
ДАМП 2015 ЕкатеринбургДАМП 2015 Екатеринбург
ДАМП 2015 Екатеринбург
 
Gipp
GippGipp
Gipp
 

Будущее шаблонизаторов

  • 2. 2
  • 3. План выступления 1.  Я сею хаос и смуту, погружаю всех в депрессию. 2.  Я добиваюсь осознания несовершенства мира. 3.  ??? 4.  Кто‑то пишет новые инструменты которые решают мои проблемы. 3
  • 4. Условия в которых появлялись инструменты для разработки сайтов —  Маленький объем проекта – 5-10 типовых страниц. —  Мало реиспользуемых элементов и они простые. —  Пишется одним разработчиком за пару дней. —  Сдается один раз и не дорабатываются в будущем. Такому проекту не нужно ни инструментов, ни методологий 4
  • 5. Что изменилось сейчас —  Количество страниц увеличивается до 30–40–50. —  Состоит из большого набора повторяющихся, реиспользуемых элементов. —  Над проектом работает несколько разработчиков. —  Проект делается и поддерживается годами. Без инструментов и методологий вы сойдете с ума 5
  • 6. Иструменты разработки —  CSS-методологии: БЭМ, OOCSS, SMACSS. —  Пре- и постпроцессоры: SASS, Less, Stylus, PostCSS. —  Диалекты JS: CoffeeScript, TypeScript, ES6. —  Модульные системы: CommonJS, RequireJS. —  Минификаторы: UglifyJS, clean-css. —  Системы сборки: Grunt, Gulp, Webpack. 6
  • 7. Две основных линии развития проектов —  SPA (Single Page Application) приложения. —  Крупные интернет‑магазины, каталоги и сайты СМИ. 7
  • 8. Чем они отличаются SPA Не-SPA Индексация поисковиками Не нужна Нужна Количество страниц Среднее Большое Динамические элементы Много Мало 8
  • 9. SPA развиваются дальше —  Полноценные компонтенты (React). —  Полная изоляция стилей + автоматическое удаление неиспользуемых и объединение по содержимому (CSS Modules, Free Style). —  Hot reload всего и вся (WebPack + React HotReload + Redux). —  Собрка по бандлам (WebPack). 9
  • 10. Обычные сайты – нет —  Для каждого языка программирования свой набор шаблонизаторов. —  Если какие‑то шаблоны надо использовать на клиенте – самый простой способ копипаст. —  Шаблонизаторы никак не связаны со стилями и логикой. —  Подключение и сборка всех видов ресурсов идет отдельно из без возможности автоматического удаления неиспольземого кода. —  Никакого hot reload для страниц и автоматических бандлов.10
  • 11. Гипотеза Вслед за сборкой ассетов, которые полностью ушли в Node.js, шаблонизаторы для больших проектов тоже уйдут туда. Что с этим делать? 11
  • 12. Почему Node.js? —  В большинстве больших проектов уже и так есть Node.js для сборки ассетов. —  Не надо учить новый язык. —  Шаблоны можно использовать и на сервере и клиенте. —  Достаточно сделать и поддерживать одну реализацию шаблонизатора под все бэкенд‑платформы и языки. —  HTML/JS/CSS должны обрабатываться в одном месте, чтобы можно было делать полноценные компоненты. 12
  • 13. Чего не хватает сейчас для полного счастья? 1.  Интеграции с бэкендом. 2.  Компонентного шаблонизатора который умеет хорошо работать с сервером. 13
  • 15. Интеграция с бэкендом 1.  Express-сервер и API. 2.  Стандартный шаблонизатор в Ruby/Python/PHP делает структуру страницы. 3.  Ruby/Python/PHP отправляют json с данными в Node.js приложение. 15
  • 17. Ruby/Python/PHP делает структуру, Node.js рендерит Интеграция с бэкендом 17
  • 18. Ruby/Python/PHP отправляют json с данными в Node.js Интеграция с бэкендом 18
  • 19. Почему не стандартный React? —  Куча неиспользуемого js (надо тащить с собой все шаблоны, чтобы работали события). —  Большой overhead в html из‑за кучи реактовых аттрибутов. Серверный шаблонизатор 19
  • 20. React 0.14 и вынесенные отдельно рэндеры —  В React 0.14 часть отвечающая за рэндер в HTML/ObjectiveC вынесено отдельно от части отвечающей за описание компонентов. —  Можно написать свой рендер‑движок, который будет добавлять react-attribute'ы только к тем элементам (и их детям) у которых есть динамическое поведение. —  Можно делать js-бандл только из отобранных по такому принципу компонентов. Серверный шаблонизатор 20
  • 21. Заключение —  Будущее за переездом шаблонов в Node.js и компонентными шаблонизаторами. —  Для того чтобы переход состоялся нужно два недостающих куска технологий. —  Каждый из них отделим и самоценен. —  Надо писать. 21