模块化之HTML CSS IMG
页面模块化的实施,这里指的是针对除去JavaScript部分的页面代码进行模块化实施。通过html css 图片进行模块化。
页面模块化的实施思路是高度耦合的页面片段封装,模块布局作为公开接口,高度耦合的页面进行封装,使用独立的css文件,高度耦合的图片进行封装,给某类相关性强的图片建立文件夹。
页面模块化的目的是,实现多人协同开发页面,提高页面研发速度和降低维护难度。研发速度的提升体现在多人协同并行开发,维护难度体现在减少版本的混乱,根据模块区分版本降低版本间代码冲突和文件错误覆盖。
拆分页面模块,从小到大的分解
1. 拆分页面模块
一个页面有很多个小单元模块组成,他来自有原始需求文档,比如
logo,导航,内容1,内容2,内容3,内容4,尾部导航,版权信息等等。
根据他们就可以拆分出基本的模块。
2. 拆分网站模块
将整个网站安排频道或者分类进行拆分,比如
首页,内容页,文字列表页,图片列表页,频道1页面,频道2页面,分类1页面,分类2页面,后台管理页面,等等
3. 每个网站作为一个模块。比如
商城站,支付站,论坛,三个站独立为三个大模块。
模块化实现
1. 高度耦合提取为一个模块,将模块代码作用域进行控制
代码1.非继承模块,通过后台选择符方式控制作用域
<div class="mode">
<h3 class="title">title</h3>
<div class="con">
con
</div>
<a class="more">more</a>
</div>
.mode {}
.mode .title {}
.mode .con {}
.mode .more {}
<div class="footer">
<ul>
<li><a href="" title="">关于</a></li>
<li><a href="" title="">合作</a></li>
<li><a href="" title="">招聘</a></li>
</ul>
<p>Copyright © 2009 某公司 版权所有</p>
</div>
.footer {}
.footer ul {}
.footer p {}
代码2.继承模块,提取众多模块中公共部分,具体模块通过优先级进行处理。继承模块方面整站某些模块的批量修改处理,也提高复用性降低代码重复。
.mode .title {}
.mode .con {}
.mode .more {}
<div class="mode mode2">
<h3 class="title">title</h3>
<div class="con">
con
</div>
<a class="more">more</a>
</div>
2. 页面模块
页面模块代码作用域的控制通过css文件来控制。某类具有高度耦合的页面使用自身的css文件。
3. 模块间的公开接口
上面是模块的封装,公开的接口在页面中表现为什么?
首先是reset,base,可继承模块,这些代码是开放接口,必须根据这些代码进行页面代码开发,也就是你的页面代码必须在以上代码基础上开发。
其次是css文件,css文件名称和他作用于那些页面。
再次是布局、模块class,id命名,模块在页面的哪个位置。在CSS中的表现就是定位,布局,和部分盒模型。float、position、width、height等等。布局通常使用css作为接口实现,如果布局具有高度的逻辑性,完全可以通过html和css组合进行,比如960 Grid System,或者采用YUI grid.css。模块class和id的命名用于区分模块,不能在一个页面的所有css中出现不同模块同用一个class和id名。
规划整站模块
上文提到的基本的原理,真正实施起来还是存在很多问题,模块粒度问题,公共模块与普通模块的区分,继承模块是否值得继承等等,页面模块如何划分。
首先,了解你的项目,通过画网站树状图了解你网站的总体结构和页面模块
其次,理清结构逻辑和视觉逻辑,结构逻辑就是看你的页面由那些模块组成,视觉逻辑了解可继承模块,布局逻辑(网格布局或者非网格布局)

9 Comments
学习了,请问能举个具体的例子吗
例子已经有了,再具体就是案例分析了。
[...]转载自 模块化之 HTML CSS IMG | GreenGnn.ORG[...]
我在想到底模块化是不是真的那么实用?
我个人觉得不是实不实用。是方便。节省,高效。模块化这东西,应该不是所有项目都可以用到。心中有这个概念。
对于团队协作、版本后期升级开发这类需求有立竿见影的效果
主题很好看 哈哈
@unicac 对于多人协作、版本上线后期开发效果立竿见影
模块化,高效的工作!减少重复的编写。