«Компонентная верстка с angularjs», Андрей Яманов (cto teamhunt)

34
Компонентная верстка с AngularJS MoscowJS 28 Докладчик: Яманов Андрей http://tenphi.me

Upload: mailru-group

Post on 15-Apr-2017

10.554 views

Category:

Software


0 download

TRANSCRIPT

Page 1: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Компонентная верстка с AngularJS

MoscowJS 28

Докладчик: Яманов Андрейhttp://tenphi.me

Page 2: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Проекты

TeamHunt.co TweetWorthy.co Quotable.TipsBeta Beta

Page 3: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Содержание

• Angular-компоненты

• Верстка• Стили

Page 4: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Поиск “идеальной” методологии для

компонентов

Page 5: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Плоская структура компонентов

Page 6: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Angular-компоненты

Page 7: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

directive component

Page 8: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Особенностиmodule.component()

• Вся логика реализована через controller.• Можно привязать только к элементу.• Scope всегда изолирован.

https://docs.angularjs.org/guide/component

[email protected] и выше

Page 9: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Создание компонента

module.directive()

* до [email protected]

Page 10: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Создание компонента

module.component()

Page 11: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

block.js

Page 12: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

app.js

Page 13: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Наследование компонентов

• Object.assign()

• class “extends”

Page 14: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Верстка

Page 15: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

BEMкак методология

верстки

Page 16: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Минусы БЭМ

• Строгие правила для определения стилей;• Почти нет ограничений для верстки;• Значения модификаторов возможно излишни.

Page 17: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Block As Component

• Компонентный подход в вёрстке;• Контекстные селекторы;• Значений модификаторов нет.

Page 18: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

block.html

Page 19: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Темная сторона силы

Page 20: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Темная сторона силы

Page 21: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

angular-bem

https://github.com/tenphi/angular-bem

Page 22: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

angular-bemи компоненты

• Генерация классов BEM на основе атрибутов;

• Установка модификаторов по состоянию компонента;

• Не замедляет компиляцию шаблона.

Page 23: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

DDOreplace: false

* compiled

Page 24: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Наследованиеhttp://learnjade.com/tour/template-inheritance/

На примере Jade:

base.jade

child.jade

Page 25: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Стили

Page 26: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Стили для компонента

Page 27: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Используем LESS

Page 28: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Селектор с контекстом

Page 29: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Наследование

Page 30: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Используем переменные!

Page 31: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Используем переменные!

Page 32: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

Вместо вывода

Page 33: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

–Разработчик с большим и грустным опытом

“Никакая документация, методология или устоявшаяся практика не

избавляет разработчика от необходимости думать.”

Page 34: «Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)

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

Вопросы?

Инструменты:http://bit.ly/1WItKwI

GitHub:https://github.com/tenphi