css本身,可以说是一门非常简单而容易入门的语言。制作一个页面,或者制作一个小企业站,对于css的要求都是非常低的。只要熟悉语法,通过英文单词的含义猜,都基本可以拼出一套样式。更何况市面上还有各种各样的辅助软件。

如果是一个比较大的网站,对css架构的要求就会相对高一些。比如,有一些可以公用的部分,可以提取出做模块。这个就是所谓的模块化。

模块化有什么优点呢?

在不去google各种结果的情况下,我脑袋中能反应到的主要有以下几点:

1,减少无意义的开发工作量——不需要复制粘贴某段样式代码到其他文件。

2,代码容易维护。如果模块样式有变更,只需要修改一个css文件即可。

3,配合对应的注释和目录结构,会让整个项目的html和css代码看起来更清晰。

但是模块化有时候就很纠结了。

在实际开发维护一个网站的过程中,html提供的模块,通常是按照功能来维护的。但是一般所谓css的模块化,是按照UI呈现来做的模块,模块的划分标准并不统一。

对于css本身的整理,我们会希望按照css来划分模块。但是对于html,包括提供给下游部门进行开发时,当然要提供html模块。他们并不关心css具体是如何划分和整合的。

于是,有了下面这种想法:

css分为5层结构

base层——是一些全站公用的基础样式和基础模块样式层(我把清0包括在这里了)。这个层相当于按照UI呈现来划分了模块。如果配合良好的UI规范,也可以保证整站的基础模块UI呈现一致。在大网站来说,这点应该是专业UI设计需要保证的。如果靠谱的话,base层甚至可以开发成一个网站的样式核心包。

module层——是功能模块样式层。这部分的css是由基础模块样式和非公用样式2部分组合而成的。

patch层—— 是补丁层。在用功能模块拼合页面的时候,将边距和其他一些模块中无法包含的样式放在patch中。(比如某个页面突然要求增加一个banner之类的)

pages层——是个是用import方式将module层和patch层的东西引入到页面的样式表文件。配合可以合并css的软件(可以google下关键字Merge可以搜到一些),将所有import的文件压缩在这个pages文件中上线。

tag层 —— 最上面的tag相当于实际压缩后上线的css代码,并不消耗开发成本。这样基本可以保证每个页面css的http请求只有1个。又可以满足本地模块化开发。

html对应的结构

html相当于分为4层。

base层 —— 对应css的base层。是整个UI规范样式和规范样式html代码的一个参考文件。

module层——对应css的module层。可以提供给其他开发人员,里面要写全该模块的所有状态。这样既可以保证后台开发人员很方便的找到某个功能的代码,又解决了有时候提供一个完整页面要牺牲掉部分状态的情况。比如一个按钮有2种状态,如果都放在页面上,页面就容易走样。如果不放在页面上,又不方便后台工程师开发。当然之前我是把其他状态写注释的方式写在页面上的,但是仍然有问题,就是经常需要去重复 注释/取消注释 这种无意义的劳动。

pages层——就是拼好的页面。module既然已经提供了具体的代码给后台的工程师们,那pages干啥呢?它存在的意义是告诉自己和其他人,每个模块需要放置的位置。还有提供宏观的预览。没有预览,总是不爽的吧!

dev层——其实这个是个纯开发用的。各种后台语言都有include可以用来管理公用模块。但是html却没有。为此DW还提供了个既强大又坑爹的模板功能。但是感觉很少有人用。不知道是因为操作复杂?不灵活?还是因为生成了一坨一坨注释?看起来很低级?不知道,反正我也没有。有幸的是xxx人帮忙开发了一个本地程序用来解决html的include问题。dev目录下的文件是按照此程序语法要求来写的。给定一个module下的url地址,然后自动合并html代码,生成pages下的文件。

html与css架构的一点体验的更多相关文章

  1. CSS架构

    CSS架构 有趣的是,我们通常不这样评判其他语言.一个Rails开发者不会因为他写的代码规范就认为他是一个好的开发者.因为这是最基本的.当然它必须是满 足规范,除此以外还要考虑其他方面:代码是否有可读 ...

  2. CSS框架分析与网站的CSS架构

    框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题,是一种可复用的构架. 我们对CSS框架这个词比较陌生,但对于JavaScript框架就比较熟悉了,比如jQuery 但为 ...

  3. css架构目标:预测,重用,扩展,维护

    请参看下面链接: CSS架构目标:预测.重用.扩展.维护

  4. CSS架构目标

    擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.无需使用表格.尽可能少的使用图片.如果你是个名副其实的高手,你可以快速把最新和最伟大的技术应用到你的项目中,比如媒体 ...

  5. 我的CSS架构

    写在前面 都是自己看别人的架构,自己积累下来的一些东西,这里只是阐述自己的一些观念.借此希望同行交流交流下看法,共勉. 不同架构的CSS 业务流程不同,团队配员不同.会有各种各样的CSS架构. 有的会 ...

  6. CSS架构的优选和解决方案

    背景 上周我厂前端小伙伴们开了一个技术交流会,关于如何优选CSS架构.解决掉平时写CSS时频繁出现的各种问题,这是前端人员老生常谈的问题,但却很少搬上台面,铺开正式地开交流会.这次会议,便是围绕CSS ...

  7. 20151224今天发现到的两篇关于CSS架构、可复用可维护CSS和CSS学习提升能有改变思想观念意识的文章 分别是CSS架构目标和说说CSS学习中的瓶颈

    多讲一个,CSS全称是什么?CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表又被我们称为CSS样式,CSS样式又被作为一种能制作出各种样式网页的技术 ...

  8. 范仁义web前端介绍课程---4、html、css、js初体验

    范仁义web前端介绍课程---4.html.css.js初体验 一.总结 一句话总结: html:就是网站的骨架,比如div标签.a标签等 css:style标签或者style属性里面的就是css j ...

  9. 三层架构的一点理解以及Dapper一对多查询

    1.首先说一下自己对三层架构的一点理解 论坛里经常说会出现喜欢面相对象的写法,所以使用EF的,我个人觉得他俩没啥关系,先别反对,先听听我怎么说吧. 三层架构,基本都快说烂了,但今天还是说三层架构:UI ...

随机推荐

  1. 【BZOJ 4819】 4819: [Sdoi2017]新生舞会 (0-1分数规划、二分+KM)

    4819: [Sdoi2017]新生舞会 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 601  Solved: 313 Description 学校 ...

  2. luoguP3175 [HAOI2015]按位或 min-max容斥 + 高维前缀和

    考虑min-max容斥 \(E[max(S)] = \sum \limits_{T \subset S} min(T)\) \(min(T)\)是可以被表示出来 即所有与\(T\)有交集的数的概率的和 ...

  3. hdu 5828 Rikka with Sequence 线段树

    Rikka with Sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5828 Description As we know, Rik ...

  4. Ural 2045. Richness of words 打表找规律

    2045. Richness of words 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=2045 Description For ...

  5. 使用 IntraWeb (25) - 基本控件之 TIWRegion

    这应该是 IW 中最重要的容器了, 和它同父的还有 TIWTabControl TIWRegion 所在单元及继承链: IWRegion.TIWRegion 主要成员: property Align: ...

  6. Message Queue协议AMQP

    历史: Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的产品,当时的Message queuing软件叫做:the information b ...

  7. HDU 4778 Gems Fight! (2013杭州赛区1009题,状态压缩,博弈)

    Gems Fight! Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 327680/327680 K (Java/Others)T ...

  8. FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream流

    一.Windows下面编译ffmpeg 首先需要解决的问题是:在windows下面编译 ffmpeg, 并让其支持dshow, 本人把ffmpeg编译成功了, 但是编译出来的ffmpeg不支持dsho ...

  9. delphi 主线程向子线程发送消息

    while True do begin if not PeekMessage(msg,0,0,0,PM_REMOVE) then begin case MsgWaitForMultipleObject ...

  10. Delphi2010 RTTI + Attribute 简单实现ORM实例

    1.支持ORM,最基础的两个信息是表的信息和字段信息.这两个信息,如果用Attribute 来辅助,代码更简洁和可读性更好.可以把属性名当做真实字段名,也可以将特性里的属性当成真实姓名,再加上字段标题 ...