ãã®èšäºã§ã¯ãBEMãã¯ãããžãŒã䜿çšããŠãããžã§ã¯ããäœæããæ¹æ³ã«ã€ããŠèª¬æããŸãã
CSSã®BEMã®ååã
i-bem.js
宣èšåJavaScriptãèšè¿°ãã
BEMHTML
ãã³ãã¬ãŒã
BEMHTML
ã䜿çšãã
BEMHTML
ã䜿çšããŠã
補åã«ã¿ãã°ããŒãžã段éçã«äœæããŸãã
bem tools
ã¯ãç¹ã«
bem server
éçºããŒã«ã®ãã¹ãŠãæ¯æŽããŸãã

éèŠïŒãã®èšäºã«ã¯ç¹ã«è©³çްã¯ãããŸããããã®ç®çã¯ããããžã§ã¯ããã§ããã ãæ©ãååŸããããšã§ãã ããå€ãã®æ
å ±ãæããã«ããããã¹ãã¯ãæ¬¡ã®æçš¿ã§éå¬ãããŸãã
BEMãšã¯äœã§ããïŒ
ããããããã®ç¥èªã®æå³ãç¥ããªã人ã®ããã®å°ããªäœè«ã§ãã
BEMã¯ãBlockãElementãModifierãã®ç¥ã§ãã ããã¯Webãããžã§ã¯ãéçºæ¹æ³è«ã§ãããä»»æã®ãã¯ãããžãŒã«é©çšã§ãããã€ã³ã¿ãŒãã§ãŒã¹ãåå¥ã®éšåã«äŸ¿å©ã«åå²ããæ¹æ³ã§ãã ããã«ãBEMã¯äœæ¥ãèªååããããã®ããŒã«ã®ã»ããã§ãã æåŸã«ãBEMã¯ãé«éã§å¹ççãªéçºã®ããã®ããã³ããšã³ãã©ã€ãã©ãªãäœæããæ©èœã§ãã
以åã«BEMã«ééããããšããªãå Žåã¯ãæåã«ãµã€ã
bem.infoã®è³æãèŠãŠããããã®èšäºã«æ»ã£ãŠãã ããã
ãããªããã£ãšå¥œããªäººã®ããã«
ãWebConf Riga 2012ã®ã¬ããŒãã®é²é³ ïŒè±èªïŒãŸãã¯
RIT 2011ã§ã®Sergey BerezhnoyïŒ@vegedïŒã®ã¹ããŒããæäŸã§ããŸãã
å¿
èŠãªããŒã«
ãã®ããã¥ã¢ã«ã®ãã¹ãŠã®æé ãå®è¡ããã«ã¯ã
bem toolsãã€ã³ã¹ããŒã«ããå¿
èŠããã
ãŸã ã ããã¯ãBEMãšã³ãã£ãã£ãæäœãããããžã§ã¯ããæ§ç¯ããããã®ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ãåããããŒã«ã®ã»ããã§ãã ã€ã³ã¹ããŒã«æé ã¯ããªããžããªã®èª¬æã«ãããŸãã
ãã®èšäºã®å·çæç¹ã§ã¯ãããŒãžã§ã³
0.5.21
ãé¢é£ããŠããŸããã
ç¬èªã®ãããžã§ã¯ããªããžããªãäœæãã
ãããžã§ã¯ããäœæããæãç°¡åãªæ¹æ³ã¯ãé©åãªæ§é ãæã€æ¢åã®ãªããžããªãåçŽã«ã³ããŒããããšã§ãã ãã«BEMã¹ã¿ãã¯ã䜿çšãããããžã§ã¯ãã«ã¯ã
project-stubãªããžããªãé©ããŠããŸãã å·çæç¹ã§ã¯ããªããžã§ã³
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ããŒãžã1ã€ãããŸãã
ãã®æç¹ã§bemãµãŒããŒã¯ã¢ã»ã³ããªã«å¿
èŠãªã©ã€ãã©ãªãããŒããããããããŒãžãžã®æåã®ãªã¯ãšã¹ãã¯ããªãã®æéåŠçãããŸãã
ãããžã§ã¯ãæ§é ã¯ããããã¯ã
desktop.blocks
ãã£ã¬ã¯ããªã«é
眮ãããããŒãžã
desktop.blocks
ãã£ã¬ã¯ããªã«é
眮ãããããšãæ³å®ããŠããŸãã
äžè¬çã«ãå³å¯ã«èšãã°ã
desktop.bundles
ã¯ãã»ãããã®ãããã¯ãä¿åããŸãã ãããã¯ãé »ç¹ã«äœ¿çšãããè€æ°ããŒãžã®ãããã¯ïŒéåžž
common
ãšåŒã°ããïŒãè€æ°ããŒãžãçµåããã»ããïŒãã¹ãŠã®ããŒãžãçµåãããå Žåã¯ãã¹ãŠïŒããŸãã¯æãåçŽãªå Žåã¯ãããããã1ããŒãžã«å¯Ÿå¿ãããããã¯ã®ã»ããã§ãã ããã§ãæåŸã®ã·ã³ãã«ãªãªãã·ã§ã³ãæ€èšããŸãã
ãã¡ã€ã«
desktop.bundles/index/index.bemjson.js
倿Žããããšã§ããŒãžãç·šéã§ããŸãã
bemjsonã®ãããã¯ã®èª¬æ
ãŸããããŒãžã«åžœåãé
眮ããŸãã 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
ãããã¯å
ã«ã
left
ãš
right
2ã€ã®èŠçŽ ãæã€
layout
ãããã¯ã
layout
ã
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>
ããã«ãããå¿
èŠãªããŒã¯ã¢ãããäœæããïŒããŒãžãæŽæ°ãããšè¡šç€ºãããŸãïŒãããã«ã¹ã¿ã€ã«ãèšè¿°ããå¿
èŠããããŸãã ã€ãŸããCSSãã¯ãããžã§
layout
ãããã¯ãå®è£
ã
layout
ã
ãããã¯äœæ
ãã¯ãããžãŒãã¡ã€ã«ãäœæããã«ã¯ã
bem create
ã³ãã³ãã䜿çšã
bem create
ã
$ bem create -l desktop.blocks/ -T css -b layout
ãã®ã³ãã³ãã¯
desktop.blocks/layout/layout.css
ãäœæããŸãããã®ãã¡ã€ã«ã«ã¯ããããã¯ãã¡ã€ã«ã«å¯Ÿå¿ããã»ã¬ã¯ã¿ãŒãæ¢ã«ãããŸãã ã«ãŒã«ã¯ããããã¯ã®ç®çã«å¿ããŠè£è¶³ããå¿
èŠããããŸãã
ããã§ãåçŽã«ã³ããŒã§ããŸãïŒ
https :
//gist.github.com/4175598ã©ã€ãã©ãªã®ãããã¯ã䜿çšãã
layout
åã蟌ãŸããæ€çŽ¢ãã©ãŒã ãšããŽãããã¯ã¯ãåå¥ã«å®è£
ããå¿
èŠã¯ãããŸããã ãããã¯ãã§ã«
bem-blã©ã€ãã©ãªã«å®è£
ãããŠ
ãããåã«ããŒãžã§å®£èšããã ãã§ååã§ãã ã€ãŸãããããã¯ã®BEMJSONèšè¿°ãããŒãž
desktop.bundles/index/index.bemjson.js
ãã®ããŒãžã§ã¯ã
b-searchãããã¯ãš
b-logoãããã¯ã䜿çšããŸãã
https://gist.github.com/4175640ããããããŽã®åçãæ®ãããç¬èªã®ããŽ
ãæå®ã§ããŸãã

ã©ã€ãã©ãªãããã¯ã®åå®çŸ©
CSSåå®çŸ©
䜿çšãã
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>
çµæã®ããŒã¯ã¢ããã«å¯ŸããŠãCSSã«ãŒã«ãäœæãããŸãã
$ bem create -l desktop.blocks/ -T css -b b-page
çµæã®
desktop.blocks/b-page/b-page.css
ã®ã³ã³ãã³ãã¯ã
https ïŒ
desktop.blocks/b-page/b-page.css
ããã³ããŒã§ããŸã
ããããŠãããããŒãããã¯ãããŒãžã«è¡šç€ºããããã«ãå¢çç·ãä»ããŸãã
$ bem create -l desktop.blocks/ -T css -b head
ãã¡ã€ã«
desktop.blocks/head/head.css
ïŒ
https :
desktop.blocks/head/head.css

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ãã¯ãããžãŒã§å®è£
ããå¿
èŠããããŸãã å€èг-CSSãã¯ãããžãŒã ãããã£ãŠãããã©ã«ãã§æäŸããããã¹ãŠã®ãã¯ãããžãŒã§ãããã¯ãäœæã§ããŸãã
$ bem create -l desktop.blocks -b goods
desktop.blocks/goods/goods.bemhtml
ã®BEMHTMLãããã¯ãã³ãã¬ãŒãã§ã¯ãããŒã¿ãå«ãJSONããããã¯èŠçŽ ã«å€æããã³ãŒããèšè¿°ããå¿
èŠããããŸãã ãŸãã
tag
modã䜿çšããŠããããã¯ãšãã®èŠçŽ ã衚ãDOMèŠçŽ ãæå®ããŸãã
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
ãããã¯ã䜿çšããŠãªã³ã¯ã§ã©ããã§ããŸãã
{ 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ãããã¯ã®CSSã¯ã
httpsïŒ//gist.github.com/4177163ããã³ããŒã§ã
ãŸã ã
CSSãã¯ãããžãŒã§ãããã¯ãåå¥ã«äœæããå¿
èŠã¯ãããŸãããå
ã
å¿
èŠãªãã¹ãŠã®ãã¡ã€ã«ã§äœæãããããã§ãã

IEã«ã¯CSSãå¿
èŠã§ãã ããã©ã«ãã®ãã¯ãããžãŒãªã¹ãã«ã¯å«ãŸããŠããŸããã
$ bem create block -l desktop.blocks/ -T ie.css goods
çµæãšããŠåŸããã
desktop.blocks/goods/goods.ie.css
ã®å
容ã¯ãGist
https://gist.github.com/4177174ã§ååŸã§ããŸã
ããããã¯ã®äŸåé¢ä¿
宣èšã«å ããŠãããŒãžãã³ãã¬ãŒããCSSãããã³JavaScriptãããã¯ãžã®æ¥ç¶ãä¿èšŒããå¿
èŠããããŸãã ãã®ããããããã¯ã¯äŸåé¢ä¿ãèšè¿°ããããšãã§ããŸããããã¯ã
deps.js
ãã¯ãããžãŒã§ãããã¯ã衚ãããšã«ãã£ãŠè¡ãããŸãã
$ bem create -l desktop.blocks/ -T deps.js -b goods
b-link
ãããã¯ãå¿
èŠã§ããããšãæå®ããããšã«ãããlax
shouldDeps
äŸåé¢ä¿ãå©çšã§ããŸãã
({ shouldDeps: [ { block: 'b-link' } ] })
https://gist.github.com/4177031ã©ã€ãã©ãªãæ¥ç¶ãã
åžœåãšå補åã«ãã¡ãã·ã§ããã«ãªåœ±ä»ãã®é·æ¹åœ¢ãæç€ºããããšæããŸãã ãã®ãããã¯ã¯
ãå人ã®
ã©ã€ãã©ãªããåã
ãŸã ã
box
ãšåŒã°ãããããã¯ã¯1ã€ãããªã
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
è¡ãã
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
ãåèµ·åããå¿
èŠããã
bem server
ã çŸåšã®ããã»ã¹ãäžæãã
make
ã³ãã³ããå床å
¥åããå¿
èŠããããŸãã
å°æ¥ã®ããŒãžã§ã³ã§ã¯ãåèµ·åã®çŽæã¯åé€ããããšçŽæãããŠããŸãã
ãããã¯ãšèŠçŽ ã®æ··å
ããã§ã
box
ãããã¯ã䜿çšã§ããŸãã ãããããããã¯ã«ã©ããããã ãã§ãã ãã ããããŒã¯ã¢ãããä¿åããããã«ã1ã€ã®DOMããŒãã§2ã€ã®ãããã¯ãæ··åšãããããšãã§ããŸãã ããã¯
mix
ãšåŒã°ã
mix
ã
æ··åãã1ã€ã®æ¹æ³ã¯ãå
¥åïŒBEMJSONïŒã§èšè¿°ããããšã§ãã
ãã®å ŽåãããŒãžã³ãŒãã倿ŽããŠã
head
ãããã¯ãš
box
ãããã¯ãæ··åšãããå¿
èŠããããŸãã
{ 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
ãããã¯ãšæ··åã
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>

宣èšçãªJavaScript
JavaScriptæ©èœãåãããããã¯
æ¥ç¶ããããµãŒãããŒãã£ã©ã€ãã©ãªã®ãããã§ç§ã®ãããžã§ã¯ãã«ç»å Žãã
box
ãããã¯ã¯ãåçãªJavaScriptæ©èœãæäŸããŸã-æããããããšãã§ããŸãã
ããããŒã§ãã®JavaScriptæ©èœã䜿çšããããšãäŒããã«ã¯ã
head
ãããã¯ã®èª¬æã倿ŽããŠãæ··åããã
box
ã«JavaScriptå®è£
ãããããšã瀺ãå¿
èŠããããŸãã
mix: [{ block: 'box', js: true }]
https://gist.github.com/4202622ãŸãããããã¯å
ã«
switcher
èŠçŽ ãé
眮ããå¿
èŠããããŸã
content: [ { block: 'layout', ... }, { block: 'box', elem: 'switcher' } ]
https://gist.github.com/4202651ç¢å°ã®ä»ãããããã¯ã衚瀺ããããããæããããã ãå±éãããã§ããŸãã

JavaScriptãªãŒããŒã©ã€ã
JavaScript
box
æ©èœã ãã§ã¯ååã§ã¯ãããŸããã 瞊æ¹åã ãã§ãªããæšªæ¹åã«ãæããããã§ã»ããã ãã ããä»ã®äººã®ã©ã€ãã©ãªã倿Žããããšã¯ã§ããŸããã ããããJavaScriptãããã¯ã¯
i-bemãããã¯ã®å®£èšãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠèšè¿°ãããŠããããããããã¯ã®åäœãç¬èªã®ã¬ãã«ã§å€æŽïŒãªãŒããŒã©ã€ããŸãã¯ãªãŒããŒã©ã€ãïŒããæ©äŒããããŸãã
bem create -l desktop.blocks -T js -b box
çµæã®
desktop.blocks/box/box.js
ã¯ã修食åã®ã€ã³ã¹ããŒã«ã«å¯Ÿããåå¿ã説æãã
onSetMod
ã»ã¯ã·ã§ã³ã®ã¿ãæ®ãå¿
èŠããã
desktop.blocks/box/box.js
ã
onSetMod : { }
https://gist.github.com/4195865ãã®å Žåã
closed
修食åã®ã€ã³ã¹ããŒã«ãšåé€ã«å¿çããå¿
èŠããããŸãã
onSetMod : { 'closed': { 'yes': function() {
https://gist.github.com/4195879æ°ããããŒãžãäœæ
ããŒãžã¯ãç¬èªã®ã¬ãã«ã®åå®çŸ©ã§ã¯ãããã¯ã§ããããŸãã ãããã£ãŠãããããäœæããã«ã¯ã
bem create
ã³ãã³ãã䜿çšããããšãã§ã
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 make
ã³ãã³ãã䜿çšã§ããŸãã
ãã®ãããžã§ã¯ãã®ããã±ãŒãžã®ããŒã«ã«ããŒãžã§ã³ãå®è¡ããããšããå§ãããŸãã
./node_modules/bem/bin/bem make
æè¬ãµã€ãã®ã¬ã€ã¢ãŠãã®æºåã«ã€ããŠã
tyvãš
gela-dã«æè¬ããŸãã