BEM рдХрд╛ рд╕реНрд╡рд╛рдж рд▓реЗрдВ!

рдпрд╣ рдЖрд▓реЗрдЦ 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/4175675

b-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

box

рдЖрдк рди рдХреЗрд╡рд▓ рдмреНрд▓реЙрдХ, рдмрд▓реНрдХрд┐ рдмреНрд▓реЙрдХ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ рднреА рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
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

рдШреЛрд╖рдгрд╛рддреНрдордХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ


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() { // some functionality here }, '': function() { // some functionality here } } } 

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 ред

Source: https://habr.com/ru/post/In162385/


All Articles