рдпрд╣ рдЖрд▓реЗрдЦ BEM рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред
рд╣рдо рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ BEM рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ,
i-bem.js
рдкрд░ рдШреЛрд╖рдгрд╛рддреНрдордХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░
BEMHTML
рдЯреЗрдореНрдкрд▓реЗрдЯ
BEMHTML
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ
рдЙрддреНрдкрд╛рдж рдХреИрдЯрд▓реЙрдЧ рдкреЗрдЬ рдЪрд░рдг
BEMHTML
ред
bem tools
рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ,
bem server
рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓ред

рдорд╣рддреНрд╡рдкреВрд░реНрдг: рд▓реЗрдЦ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╛рда рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣реЛрдЧрд╛ред
BEM рдХреНрдпрд╛ рд╣реИ?
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░, рдЬреЛ рдЗрд╕ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХрд╛ рдорддрд▓рдм рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред
BEM рдХрд╛ рдЕрд░реНрде "рдмреНрд▓реЙрдХ, рдПрд▓реАрдореЗрдВрдЯ, рдореЛрдбрд┐рдлрд╛рдпрд░" рд╣реИред рдпрд╣ рдПрдХ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╛рд╕ рдкрджреНрдзрддрд┐ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреАрдИрдПрдо рдХрд╛рдо рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдмреАрдИрдПрдо рддреЗрдЬ рдФрд░ рдХреБрд╢рд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ BEM рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕рд╛рдЗрдЯ
bem.info рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рдЗрд╕ рд▓реЗрдЦ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рд╣реЛрдЧрд╛ред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ
рд╡реЗрдмрдХреЙрдиреНрдлрд╝ рд░реАрдЧрд╛ 2012 (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ)
рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛
рдЖрд░рдЖрдИрдЯреА 2011 рдореЗрдВ рд╕рд░реНрдЧреЗрдИ рдмреЗрд░реЗрдЬрд╝реЛрдп (@veged) рджреНрд╡рд╛рд░рд╛ рдПрдХ
рднрд╛рд╖рдг ред
рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг
рдЗрд╕ рдореИрдиреБрдЕрд▓ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдмреАрдо рдЯреВрд▓реНрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд
рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рдпрд╣ BEM рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдЯреВрд▓ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдВрд╕реНрдХрд░рдг
0.5.21
рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдерд╛ред
рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдмрдирд╛рдирд╛
рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рднрдВрдбрд╛рд░ рдХреЛ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдХреЙрдкреА рдХрд░рдирд╛ред рдкреВрд░реНрдг рдмреАрдИрдПрдо рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП,
рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рд╕реНрдЯрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЙрдкрдпреБрдХреНрдд рд╣реИред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдВрд╢реЛрдзрди
5ac5d2d2567ca6d52d82f95b219bca6f49ef5cc4
ред
$ git clone git://github.com/bem/project-stub.git my-pretty-project $ cd my-pretty-project/ $ git reset --hard 5ac5d2d2567ca6d52d82f95b219bca6f49ef5cc4 $ rm -rf .git $ git init
рдлрд┐рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ
make
рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реА рдХреНрд╖рдг рд╕рднреА рдЖрд╡рд╢реНрдпрдХ npm рд╕рдВрдХреБрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рдореНрди рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
info: Server is listening on port 8080. Point your browser to http://localhost:8080/
bem server
рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛
bem server
- рдПрдХ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг рдЬреЛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВред
рдмрджрд▓рддреЗ рдкреГрд╖реНрда
рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдм рдПрдХ
index.html рдкреГрд╖реНрда рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдз рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдордп рдмреАрдо рд╕рд░реНрд╡рд░ рдЕрдкрдиреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдорд╛рдирддреА рд╣реИ рдХрд┐ рдмреНрд▓реЙрдХ рдХреЛ
desktop.blocks
рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ, рдФрд░
desktop.blocks
рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рдкрдиреНрдиреЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдо рддреМрд░ рдкрд░, рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП,
desktop.bundles
рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдПрдХ "рд╕реЗрдЯ" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░
common
рдХрд╣рд╛ рдЬрд╛рддрд╛
common
), рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ (
all
рдпрджрд┐ рд╕рднреА рдкреГрд╖реНрда рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ) рдпрд╛, рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд╕реЗрдЯ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдкреГрд╖реНрда рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЕрдВрддрд┐рдо, рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдлрд╝рд╛рдЗрд▓
desktop.bundles/index/index.bemjson.js
рдХреЛ рдмрджрд▓рдХрд░ рдкреЗрдЬ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрдореНрдЬрд╕рди рдореЗрдВ рдмреНрд▓реЙрдХ рд╡рд┐рд╡рд░рдг
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреЗрдЬ рдкрд░ рд╣реИрдЯ рдбрд╛рд▓реЗрдВрдЧреЗред BEM рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣
head
рдмреНрд▓реЙрдХ рд╣реИ:
{ block: 'head' }
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреГрд╖реНрда рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб Gist:
https://gist.github.com/4175550 рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд
<div>
рдЗрд╕рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред
<!DOCTYPE html> <html class="i-ua_js_yes i-ua_css_standard"> <head>...</head> <body class="b-page b-page__body"> <div class="head"></div> </body> </html>
рд╣рдо рдЯреЛрдкреА рдХреЛ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░ рджреЗрдВрдЧреЗ: рдЦреЛрдЬ рдкреНрд░рдкрддреНрд░, рд▓реЛрдЧреЛ рдФрд░ рд▓реЗрдЖрдЙрдЯ, рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдирд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреЗрдЬ рдХреЗ BEMJSON рд╡рд┐рд╡рд░рдг рдореЗрдВ,
head
рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░, рд╣рдо
layout
рдмреНрд▓реЙрдХ рдХреЛ рджреЛ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд░рдЦрддреЗ рд╣реИрдВ:
left
рдФрд░
right
ред
content: [ { block: 'head', content: { block: 'layout', content: [ { elem: 'left', content: 'left here' }, { elem: 'right', content: 'right here' } ] } } ]
https://gist.github.com/4175573 <!DOCTYPE html> <html class="i-ua_js_yes i-ua_css_standard"> <head>...</head> <body class="b-page b-page__body"> <div class="head"> <div class="layout"> <div class="layout__left">left here</div> <div class="layout__right">right here</div> </div> </div> </body> </html>
рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдПрдЧрд╛ (рдЖрдк рдЗрд╕реЗ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ), рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╕реАрдПрд╕рдПрд╕ рддрдХрдиреАрдХ рдореЗрдВ
layout
рдмреНрд▓реЙрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
рдмреНрд▓реЙрдХ рдирд┐рд░реНрдорд╛рдг
рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
bem create
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
$ bem create -l desktop.blocks/ -T css -b layout
рдХрдорд╛рдВрдб рдПрдХ
desktop.blocks/layout/layout.css
рдмрдирд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рд╣реИред рдирд┐рдпрдо рдХреЛ рдмреНрд▓реЙрдХ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреВрд░рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдЖрдк рдХреЗрд╡рд▓ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
https://gist.github.com/4175598рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
layout
рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдЦреЛрдЬ рдлрд╝реЙрд░реНрдо рдФрд░ рд▓реЛрдЧреЛ рдмреНрд▓реЙрдХ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдмреАрдо-рдмреНрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛
рдЧрдпрд╛ рд╣реИ , рдпрд╣ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдкрд░ рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрд╣реА рд╣реИ, рдкреГрд╖реНрда
desktop.bundles/index/index.bemjson.js
рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЗ BEMJSON рд╡рд┐рд╡рд░рдг рдбрд╛рд▓реЗрдВред
рд╣рдорд╛рд░реЗ рдкреЗрдЬ рдХреЗ рд▓рд┐рдП, рд╣рдо
рдмреА-рд╕рд░реНрдЪ рдФрд░
рдмреА-рд▓реЛрдЧреЛ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
https://gist.github.com/4175640рдЖрдк
рдпрд╣рд╛рдВ рд╕реЗ рд▓реЛрдЧреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╕реНрд╡реАрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
рд╕реАрдПрд╕рдПрд╕ рд░рд┐рдбрд┐рдлрд╛рдЗрдирдореЗрдВрдЯ
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛
b-logo
рдмреНрд▓реЙрдХ рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рд░реНрдХрдЕрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рд▓рд┐рдП CSS рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рд░реНрдХрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╣рдо рдЗрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдЕрдкрдиреЗ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрддрд░ рдкрд░
b-logo
рдмреНрд▓реЙрдХ рдореЗрдВ рд░рдЦреЗрдВрдЧреЗред
$ bem create -l desktop.blocks/ -T css -b b-logo
рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк рдпрд╣рд╛рдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
https://gist.github.com/4175675b-search
рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди:
$ bem create -l desktop.blocks/ -T css -b b-search
https://gist.github.com/4195433
BEMHTML рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
рдкреГрд╖реНрда рдХреЛ рдХреЗрдВрджреНрд░рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╣реА рдмреНрд▓реЙрдХ рдмрдирд╛рдХрд░
b-page
рдмреНрд▓реЙрдХ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред BEMHTML рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
$ bem create -l desktop.blocks/ -b b-page -T bemhtml
рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓
desktop.blocks/b-page/b-page.bemhtml
рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдмреНрд▓реЙрдХ рдХреЗ рдХрдВрдЯреЗрдВрдЯ рдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИред
block b-page, content: { elem: 'body-i', content: this.ctx.content }
https://gist.github.com/4175742 <!DOCTYPE html> <html class="i-ua_js_yes i-ua_css_standard"> <head>...</head> <body class="b-page b-page__body"> <div class="b-page__body-i"> <div class="head"> <div class="layout">...</div> </div> </div> </body> </html>
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдорд╛рд░реНрдХрдЕрдк рдХреЗ рд▓рд┐рдП, рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдо рдмрдирд╛рдП рдЧрдП рд╣реИрдВ:
$ bem create -l desktop.blocks/ -T css -b b-page
рдкрд░рд┐рдгрд╛рдореА
desktop.blocks/b-page/b-page.css
рдпрд╣рд╛рдВ рд╕реЗ рдХреЙрдкреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
https://gist.github.com/4175763рдФрд░ рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕реАрдорд╛ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛:
$ bem create -l desktop.blocks/ -T css -b head
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реАред
desktop.blocks/head/head.css
:
https://gist.github.com/4175776 ред

BEMHTML рдЯреЗрдореНрдкрд▓реЗрдЯ
BEMHTML рдЯреЗрдореНрдкреНрд▓реЗрдЯ рди рдХреЗрд╡рд▓ рдмреНрд▓реЙрдХ рдФрд░ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреИрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рд╛рдордЧреНрд░реА рднреА рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдкреГрд╖реНрда рдкрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдВред рдпрд╣
goods
рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдХреЗ BEMJSON рдШреЛрд╖рдгрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
{ block: 'goods', goods: [ { title: 'Apple iPhone 4S 32Gb', image: '1450827127820366493466', price: '259', url: '/' }, { title: 'Samsung Galaxy Ace S5830', image: 'http://mdata.yandex.net/i?path=b0206005907_img_id5777488190397681906.jpg', price: '73', url: '/' }, ... }
https://gist.github.com/4176078рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд▓реЙрдХ рдХреЛ BEMHTML рддрдХрдиреАрдХ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП - рд╕реАрдПрд╕рдПрд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреАред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рднреА рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
$ bem create -l desktop.blocks -b goods
Desktop.blocks
desktop.blocks/goods/goods.bemhtml
рд▓рд┐рдП BEMHTML рдмреНрд▓реЙрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ
desktop.blocks/goods/goods.bemhtml
рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ JSON рдХреЛ рдмреНрд▓реЙрдХ рддрддреНрд╡реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА,
tag
рдореЙрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдмреНрд▓реЙрдХ рдФрд░ рдЗрд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдбреЛрдо рддрддреНрд╡ рд╣реИрдВред
block goods { tag: 'ul' ... elem item, tag: 'li' elem title, tag: 'h3' }
https://gist.github.com/4176118 <!DOCTYPE html> <html class="i-ua_js_yes i-ua_css_standard"> <head>...</head> <body class="b-page b-page__body"> <div class="b-page__body-i"> <div class="head">...</div> <ul class="goods"> <li class="goods__item"> <h3 class="goods__title">Apple iPhone 4S 32Gb</h3> <img class="goods__image" src="1450827127820366493466"/> <span class="goods__price">259</span> </li> <li class="goods__item">...</li> <li class="goods__item">...</li> </ul> </div> </body> </html>
рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рди рдХреЗрд╡рд▓ рдмреНрд▓реЙрдХ рддрддреНрд╡ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдмреНрд▓реЙрдХ рднреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП
bem-bl
b-link
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ
b-link
рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЙрддреНрдкрд╛рдж рдХреА рдХреАрдордд рдХреЛ рд▓рд┐рдВрдХ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
{ elem: 'price', content: { block: 'b-link', url: item.url, content: item.price } }
https://gist.github.com/4176996рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢реИрд▓рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЭрд░рдирд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ
goods
рдмреНрд▓реЙрдХ рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
{ block: 'b-link', mix: [{ block: 'goods', elem: 'link' }], url: item.url, content: item.price }
https://gist.github.com/4177113 ... <ul class="goods"> <li class="goods__item"> <h3 class="goods__title">Apple iPhone 4S 32Gb</h3> <img class="goods__image" src="1450827127820366493466"/> <span class="goods__price"> <a class="b-link goods__link" href="/">259</a> </span> </li> <li class="goods__item">...</li> <li class="goods__item">...</li> </ul>
рдЖрдкрдХреЛ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде рдирдП рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдорддрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
https://gist.github.com/4177157рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдпрд╣рд╛рдВ рд╕реЗ
https://gist.github.com/4177163 рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
CSS рддрдХрдиреАрдХ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдПрдХ рдмреНрд▓реЙрдХ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

IE рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ CSS рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
$ bem create block -l desktop.blocks/ -T ie.css goods
рдкрд░рд┐рдгрд╛рдореА
desktop.blocks/goods/goods.ie.css
рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА
desktop.blocks/goods/goods.ie.css
https://gist.github.com/4177174 рдкрд░ рд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░реЗрдВ
рдШреЛрд╖рдгрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдкреЗрдЬ рдЯреЗрдореНрдкреНрд▓реЗрдЯ, рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдмреНрд▓реЙрдХ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдмреНрд▓реЙрдХ рдХреЛ
deps.js
рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА рдореЗрдВ
deps.js
рд╣реИред
$ bem create -l desktop.blocks/ -T deps.js -b goods
рдЖрдк рдПрдХ
b-link
рдмреНрд▓реЙрдХ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ
shouldDeps
рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред
({ shouldDeps: [ { block: 'b-link' } ] })
https://gist.github.com/4177031рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛
рдореИрдВ рдПрдХ рдЫрд╛рдпрд╛ рдХреЗ рд╕рд╛рде рдлреИрд╢рдиреЗрдмрд▓ рдЖрдпрддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЛрдкреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрдкрд╛рдж рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдореИрдВ
рдЕрдкрдиреЗ рджреЛрд╕реНрдд рдХреА
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЙрдзрд╛рд░
рд▓реВрдВрдЧрд╛ ред
рдХреЗрд╡рд▓ рдПрдХ рдмреНрд▓реЙрдХ рд╣реИ рдЬрд┐рд╕реЗ
box
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
box
рдФрд░ рдпрд╣ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдПред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкрдбрд╝реЛрд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛
./bem/make.js
рдореЗрдВ рдЕрдкрдирд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
getLibraries: function() { return { 'bem-bl': { type: 'git', url: 'git://github.com/bem/bem-bl.git', treeish: '0.3' }, 'bemhtml' : { type: 'git', url: 'git://github.com/bem/bemhtml.git' }, 'john-lib' : { type: 'git', url: 'git://github.com/john-johnson/j.git' } }; }
https://gist.github.com/4177229рдФрд░ рдмрдВрдбрд▓реЛрдВ (рдкреГрд╖реНрда) рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдпрд╣ рднреА рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣
desktop.bundles/.bem/level.js
ред
exports.getConfig = function() { return BEM.util.extend(this.__base() || {}, { bundleBuildLevels: this.resolvePaths([ '../../bem-bl/blocks-common', '../../bem-bl/blocks-desktop', '../../bemhtml/common.blocks', '../../john-lib/blocks/', '../../desktop.blocks' ]) }); };
https://gist.github.com/4177250рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрднреА рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рддреЗ рд╕рдордп, рдЖрдкрдХреЛ
bem server
рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ
make
рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк
make
ред
рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдкреБрдирд░рд╛рд░рдВрдн рдХрд╛ рд╡рд╛рджрд╛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдмреНрд▓реЙрдХ рдФрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг
рдЕрдм рдЖрдк
box
рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдбреЛрдо рдиреЛрдб рдкрд░ 2 рдмреНрд▓реЙрдХ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ
mix
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЗрдирдкреБрдЯ (BEMJSON) рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реИред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдкреЗрдЬ рдХреЛрдб рдХреЛ рдмрджрд▓рдХрд░
box
рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде
head
рдмреНрд▓реЙрдХ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред
{ block: 'head', mix: [ { block: 'box' } ], content: ... }
https://gist.github.com/4177292 <!DOCTYPE html> <html class="i-ua_js_yes i-ua_css_standard"> <head>...</head> <body class="b-page b-page__body"> <div class="b-page__body-i"> <div class="head box"> <div class="layout">...</div> </div> <ul class="goods">...</ul> </div> </body> </html>
head
рдмреНрд▓реЙрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
box
рдмреНрд▓реЙрдХ рд▓рд┐рдЦрдирд╛ рди рднреВрд▓реЗрдВ
$ bem create -l desktop.blocks/ -T deps.js -b head ({ shouldDeps: [ { block: 'box' } ] })
https://gist.github.com/4235143
рдЖрдк рди рдХреЗрд╡рд▓ рдмреНрд▓реЙрдХ, рдмрд▓реНрдХрд┐ рдмреНрд▓реЙрдХ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ рднреА рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
goods
рдмреНрд▓реЙрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рддрддреНрд╡ рдХреЛ рдПрдХ
box
рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдПрдВред
content.push({ elem: 'item', mods: mods, mix: [{ block: 'box' }], content: ...
https://gist.github.com/4177350 <!DOCTYPE html> <html class="i-ua_js_yes i-ua_css_standard"> <head>...</head> <body class="b-page b-page__body"> <div class="b-page__body-i"> <div class="head box"> <div class="layout">...</div> </div> <ul class="goods"> <li class="goods__item box">...</li> <li class="goods__item box">...</li> <li class="goods__item box">...</li> <li class="goods__item goods__item_new_yes box">...</li> <li class="goods__item box">...</li> <li class="goods__sizer">...</li> ... </ul> </div> </body> </html>

рдШреЛрд╖рдгрд╛рддреНрдордХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ
box
рдмреНрд▓реЙрдХ, рдЬреЛ рдХрдиреЗрдХреНрдЯреЗрдб рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЧрддрд┐рд╢реАрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдЗрд╕реЗ рдзреНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ
head
рдмреНрд▓реЙрдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ
box
рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:
mix: [{ block: 'box', js: true }]
https://gist.github.com/4202622рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░
switcher
рддрддреНрд╡ рдХреЛ рд░рдЦрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ
content: [ { block: 'layout', ... }, { block: 'box', elem: 'switcher' } ]
https://gist.github.com/4202651рдпрд╣ рдПрдХ рддреАрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдврд╣ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдУрд╡рд░рд░рд╛рдЗрдб
рдореЗрд░реЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
box
рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдЧреБрдирд╛ рд╣реЛ, рдмрд▓реНрдХрд┐ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рднреА рд╣реЛред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рдХреЛ
i-bem рдмреНрд▓реЙрдХ рд╕реЗ рдПрдХ
рдШреЛрд╖рдгрд╛рддреНрдордХ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛
рдЧрдпрд╛ рд╣реИ , рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрддрд░ рдкрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ (рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб) рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред
bem create -l desktop.blocks -T js -b box
рдкрд░рд┐рдгрд╛рдореА
desktop.blocks/box/box.js
рдЖрдкрдХреЛ рдХреЗрд╡рд▓
onSetMod
рд╕реЗрдХреНрд╢рди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕рдВрд╢реЛрдзрдХ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
onSetMod : { }
https://gist.github.com/4195865рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ
closed
рд╕рдВрд╢реЛрдзрдХ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рд╣реЛрдЧрд╛:
onSetMod : { 'closed': { 'yes': function() {
https://gist.github.com/4195879рдирдП рдкреЗрдЬ рдмрдирд╛рдПрдБ
рдкреГрд╖реНрда рднреА рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреЗ рдЕрдкрдиреЗ рд╕реНрддрд░ рдкрд░ рдмреНрд▓реЙрдХ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
bem create
рдХрдорд╛рдВрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
bem create -l desktop.bundles -b contact
-T
рдзреНрд╡рдЬ рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
desktop.bundles
рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ
bem create
рдзрдиреНрдпрд╡рд╛рдж рдмрдирд╛рддрд╛ рд╣реИред рдмрдВрдбрд▓реЛрдВ рдХрд╛ рд╕реНрддрд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрдирд╛рдП рдЧрдП рдмреНрд▓реЙрдХ рдХреЛ BEMJSON рддрдХрдиреАрдХ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП,
desktop.bundles/contact/contact.bemjson.js
рдлрд╝рд╛рдЗрд▓ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред
рдирдпрд╛ рдкреЗрдЬ
http: // localhost: 8080 / desktop.bundles / contact / contact.html рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
bem server
рдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рд╕рдордп рдЕрдкрдиреА HTML, JS рдФрд░ CSS рдлрд╛рдЗрд▓реЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред
рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░реЗрдВ
рд╣рд░ рд╕рдордп рдЬрдм рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ
bem server
рдХрд╛рдо рдХрд░ рд░рд╣рд╛
bem server
рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рд░рд╣рд╛
bem server
, рдЬрд┐рдиреНрд╣реЗрдВ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд░реЛрд▓ рдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рднрд▓реЗ рд╣реА рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реЛ рдпрд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк
bem make
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ:
./node_modules/bem/bin/bem make
рдЖрднрд╛рд░ рд╕рд╛рдЗрдЯ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж
tyv рдФрд░
gela-d ред