Top Banner
YaC, Москва, 19 сентября 2011 года С ергей Бережной BEMHTML NOT yet another
49

Шаблонизатор BEMHTML

Jun 16, 2015

Download

Technology

Слайды к докладу Сергея Бережного "Шаблонизатор BEMHTML" на YAC2011
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Шаблонизатор BEMHTML

YaC, Москва, 19 сентября 2011 года

Сергей Бережной

BEMHTMLNOT yet another øшàаáбëлîоíнèиçзàаòтîоðр

Page 2: Шаблонизатор BEMHTML

who is"шаблонизатор"

?

Page 3: Шаблонизатор BEMHTML

BlackBox

Page 4: Шаблонизатор BEMHTML

BlackBox

ctx

HTML

Page 5: Шаблонизатор BEMHTML

<ul> [% IF weather %] <li>[% weather.temp %]</li> [% END %] [% IF traffic %] <li>[% traffic.level %]</li> [% END %]</ul>

Page 6: Шаблонизатор BEMHTML

Text

Page 7: Шаблонизатор BEMHTML

добавить элемент

Page 8: Шаблонизатор BEMHTML

добавить элементизменить HTML

Page 9: Шаблонизатор BEMHTML

<ul> [% IF weather %] <li>[% weather.temp %]</li> [% END %] [% IF traffic %] <li>[% traffic.level %]</li> [% END %] [% IF mail %] <li>[% mail.unread %]</li> [% END %]</ul>

Page 10: Шаблонизатор BEMHTML

<ul> [% IF weather %] <li><i> [% weather.temp %] </i></li> [% END %] [% IF traffic %] <li><i> [% traffic.level %] </i></li> [% END %]</ul>

Page 11: Шаблонизатор BEMHTML
Page 12: Шаблонизатор BEMHTML

BlackBox BlackBox

Page 13: Шаблонизатор BEMHTML

data ctx

HTML

BlackBox

BlackBox

view ctx

Page 14: Шаблонизатор BEMHTML

data ctx

HTML

BlackBox

BEMHTML

view ctx

Page 15: Шаблонизатор BEMHTML

var items = [];

if(weather) items.push({ elem: 'item', content: weather.temp });

if(traffic) items.push({ elem: 'item', content: traffic.level });

return { block: 'menu', content: items };

Page 16: Шаблонизатор BEMHTML

block menu elem item weather.temp elem item traffic.level

Page 17: Шаблонизатор BEMHTML

block menu { tag: 'ul' elem item, tag: 'li'}

Page 18: Шаблонизатор BEMHTML

block menu, elem item {

tag: 'li'

content: { tag: 'i', content: this.ctx.content }

}

Page 19: Шаблонизатор BEMHTML
Page 20: Шаблонизатор BEMHTML

project

Page 21: Шаблонизатор BEMHTML

library

Page 22: Шаблонизатор BEMHTML

library

project1 project2 project3

Page 23: Шаблонизатор BEMHTML
Page 24: Шаблонизатор BEMHTML

[% BLOCK menu %] <ul> [% FOREACH item IN items %] <li>[% item %]</li> [% END %] </ul>[% END %]

Page 25: Шаблонизатор BEMHTML

[% BLOCK item %] <li><i>[% content %]</i></li>[% END %]

Page 26: Шаблонизатор BEMHTML

[% BLOCK menu %] <ul> [% FOREACH i IN items %] [% PROCESS item content = i %] [% END %] </ul>[% END %]

Page 27: Шаблонизатор BEMHTML

block menu { tag: 'ul' elem item, tag: 'li'}

Page 28: Шаблонизатор BEMHTML

block menu, elem item, content: { block: 'icon', content: this.ctx.content}

Page 29: Шаблонизатор BEMHTML

[% BLOCK menu %]

[% BLOCK item %]

Page 30: Шаблонизатор BEMHTML

block menu, elem item, this.ctx.bla, content: 'bla'

Page 31: Шаблонизатор BEMHTML

гипотеза Сепира — Уорфа

Page 32: Шаблонизатор BEMHTML

Text

Page 33: Шаблонизатор BEMHTML

Вавилонsmallbay.ru

Page 34: Шаблонизатор BEMHTML

JavaScript

Page 35: Шаблонизатор BEMHTML

БЭМ

Page 36: Шаблонизатор BEMHTML

CSS

Page 37: Шаблонизатор BEMHTML

CSS ~ JS

Page 38: Шаблонизатор BEMHTML

CSS ~ JS ~ HTML

Page 39: Шаблонизатор BEMHTML

data ctx

HTML

BlackBox

BEMHTML

БЭМ-дерево

Page 40: Шаблонизатор BEMHTML

blocks/ myblock/ myblock.css myblock.js myblock.bemhtml

Page 41: Шаблонизатор BEMHTML
Page 42: Шаблонизатор BEMHTML

производительность выразительность

Page 43: Шаблонизатор BEMHTML

что роботу хорошо, то человеку смерть

Page 44: Шаблонизатор BEMHTML

инлайнинг

Page 45: Шаблонизатор BEMHTML

инлайнингстатические вычисления

Page 46: Шаблонизатор BEMHTML

инлайнингстатические вычисления

т.д. и т.п.

Page 47: Шаблонизатор BEMHTML

инлайнингстатические вычисления

т.д. и т.п.profiling based