Компонентная верстка
с AngularJS
MoscowJS 28
Докладчик:
Яманов Андрей
http://tenphi.me
Проекты
2
TeamHunt.co TweetWorthy.co Quotable.Tips
Beta Beta
Содержание
• Angular-компоненты
• Верстка
• Стили
3
4
Поиск “идеальной”
методологии для
компонентов
Плоская структура
компонентов
5
Angular-компоненты
6
directive component
7
Особенности
module.component()
8
• Вся логика реализована через controller.
• Можно привязать только к элементу.
• Scope всегда изолирован.
https://docs.angularjs.org/guide/component
angular@1.5.0 и выше
Создание компонента
9
module.directive()
* до angular@1.5.0
Создание компонента
10
module.component()
11
block.js
12
app.js
Наследование
компонентов
13
• Object.assign()
• class “extends”
14
Верстка
BEM
как методология
верстки
15
Минусы БЭМ
16
• Строгие правила для определения стилей;
• Почти нет ограничений для верстки;
• Значения модификаторов возможно излишни.
Block As Component
17
• Компонентный подход в вёрстке;
• Контекстные селекторы;
• Значений модификаторов нет.
18
block.html
Темная сторона силы
19
Темная сторона силы
20
angular-bem
21
https://github.com/tenphi/angular-bem
angular-bem
и компоненты
22
• Генерация классов BEM на основе
атрибутов;
• Установка модификаторов по
состоянию компонента;
• Не замедляет компиляцию
шаблона.
DDO
replace: false
23
* compiled
Наследование
24
http://learnjade.com/tour/template-inheritance/
На примере Jade:
base.jade
child.jade
25
Стили
Стили для компонента
26
Используем LESS
27
Селектор с контекстом
28
Наследование
29
Используем
переменные!
30
Используем
переменные!
31
Вместо вывода
32
–Разработчик с большим и грустным опытом
“Никакая документация, методология или
устоявшаяся практика не избавляет
разработчика от необходимости думать.”
33
34
Спасибо за внимание!
Вопросы?
Инструменты:
http://bit.ly/1WItKwI
GitHub:
https://github.com/tenphi

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

Editor's Notes

  • #2 AngularJS v1, Webpack Loader
  • #5 Быстрая и простая разработка. Webpack, ES2015
  • #7 Речь пойдет об Angular первой версии, так как именно с ним у меня есть длительный опыт работы.
  • #8 Наглядное сравнение
  • #9 Controller есть всегда, но задавать его не обязательно. По умолчанию controller виден в scope под именем $ctrl.
  • #12 Странное задание шаблона. Angular2 делает упор на inline-templates.
  • #14 Зачем наследовать компоненты?
  • #17 Строгая иерархия в DOM-дереве.
  • #18 Строгая иерархия в DOM-дереве.
  • #28 Для тех кто ищет стили текстовым поиском - используйте sourcemaps!
  • #29 Тут нужно быть осторожнее. Порядок определения может иметь значение. Изменение предназначения блока - частое явление (переименование).
  • #30 Css-Minified
  • #31 При переиспользовании блоков в другом проекте, переменные надо захватить с собой.