,减少代码的冗余。如上面的例子可以变成:
/* =S global */ h3{ /* 第一种写法 */ ... } .mode-a h3, .mode-b h3{ /* 第二种写法 */ ... } /* =E global */ /* =S mode-a */ .mode-a{...} .mode-a p{...} /* =E mode-a */ /* =S mode-b */ .mode-b{...} .mode-b div{...} .mode-b h4{...} .mode-b ul li{...} /* ==E mode-b */
不知你有没注意到宜家那些小件的商品,往往可以组合到不同的其它商品上面。这也带出了模块化的另一个话题:模块中的模块。即在模块中可以存在其它的模块,也很好理解,就像我们做网站的时候,整个页面的结构就像是一个大的模块,而上面所讲的例子就是模块中的模块了,只不过我们把这个定义缩小一层。上面例子中对h3的定义,就可以看成是一个模块,它在“mode-a”、“mode-b”两个模块中都出现,并且结构表现相对固定。
OK,这只是对一个标签的定义,如果不只一个标签呢?我们重新改下例子:
<div class="mode-b"> <div class="mode-a"> <h3>模块化Demo</h3> <p>模块化结构的例子。</p> </div> <div class="cont"> <h4>模块化的特点:</h4> <ul> <li>相对独立</li> <li>可移植性高</li> </ul> </div> </div> <div class="mode-c"> <div class="mode-a"> <h3>模块化Demo</h3> <p>这个是“模块中的模块”的例子。</p> </div> <div class="cont"> <h4>模块中的模块:</h4> <p>模块“mode-a”就是一个模块中的模块。</p> </div> </div>
/* =S mode-a */ .mode-a{...} .mode-a h3{...} .mode-a p{...} /* =E mode-a */ /* =S mode-b */ .mode-b{...} .mode-b h4{...} .mode-b .cont{...} .mode-b .cont ul li{...} /* =E mode-b */ /* =S mode-c */ .mode-c{...} .mode-c h4{...} .mode-c .cont{...} .mode-c .cont p{...} /* =E mode-c */
从上面可以看到,“mo |