前端模块化设计思路

模块化概念

模块化就是为了减少循环依赖,减少耦合,提高设计的效率。为了做到这一点,我们需要有一个设计规则,所有的模块都在这个规则下进行设计。良好的设计规则,会把耦合密集的设计参数进行归类作为一个模块,并以此划分工作任务。而模块之间彼此通过一个固定的接口(所谓的可见参数)进行交互,除此之外的内部实现(所谓的隐参数)则由模块的">开发团队进行自由发挥。

程序模块化的目的:

减 少循环依赖减少耦合提高设计效率

程序模块化的实施:

把耦合密集 的归为一个模块模块间通过固定的接口交互模块内部实现自由发挥HTML CSS Images的模块化设计

页面模块化的实施,这里指的是针对除去JavaScript部分的页面代码进行模块化实施。通过html css 图片进行模块化。
页面模块化的实施思路是高度耦合的页面片段封装,模块布局作为公开接口,高度耦合的页面进行封装,使用独立的css文件,高度耦合的图片进行封装,给某类相关性强的图片建立文件夹。
页面模块化的目的是,实现多人协同开发页面,提高页面研发速度和降低维护难度。研发速度的提升体现在多人协同并行开发, 维护难度体现在减少版本的混乱,根据模块区分版本降低版本间代码冲突和文件错误覆盖。

拆分页面模块,从小到大的分解
1. 拆分页面模块
一个页面有很多个小单元模块组成,他来自有原始需求文档,比如
logo,导航,内容1,内容2,内容3,内容4,尾部导 航,版权信息等等。
根据他们就可以拆分出基本的模块。
2. 拆分网站模块
将整个网站安排频道或者分类进行拆分,比如
首页,内容页,文字列表页,图片列表页,频道1页面,频道2页面,分类1页面,分类2页面,后台管理页面,等等
3. 每个网站作为一个模块。比如
商城站,支付站,论坛,三个站独立为三个大模块。

模块化实现
1. 高度耦合提取为一个模块,将模块代码作用域进行控制
代码1.非继承模块,通过后代选择符方式控制作用域

<div class="mod"><h3 class="title">title</h3><div class="con">        con    </div>    <a class="more">more</a></div>.
footer {}.footer ul {}.footer p {}.mod {}.mod .title {}.mod .con {}.mod .more {}<div class="footer"><ul><li><a href="" title="">关于</a></li><li><a href="" title="">合作</a></li><li><a href="" title="">招聘</a></li></ul>Copyright © 2009 某公司 版权所有</div>

代码2.继承模块,提取众多模块中公共部分,具体模块通过优先级进行处理。继承模块方面整站某些模块的批量修改处理,也提高复用性,降低代码重复。

.mod {}.mod .title {}.mod .con {}.mod .more {}.note {}.note .title {}.note .con {}.note .more {}<div class="mod note"><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名。

规划整站模块

上文提到的基本的原理,真正实施起来还是存在很多问题,模块粒度问题,公共模块与普通模块的区分,继承模块是否值得继承等等,页面模块如何划分。
首先,了解你的项目,通过画网站树状图了解你网站的总体结构和页面模块
其次,理清结构逻辑和视觉逻辑,结构逻辑就是看你的页面由那些模块组成,视觉逻辑了解可继承模块,布局逻辑(网格布局或者非网格布局)

附图:

来源:http://www.baiduux.com/blog/2010/02/24/前端模块化设计思路/

时间: 2024-07-28 15:30:27

前端模块化设计思路的相关文章

java数据权限设计-各位大神,求数据权限设计思路

问题描述 各位大神,求数据权限设计思路 求J2ee数据权限的设计思路,基本要求: 部门经理可以查看该部门下的所有数据对象(比如销售订单),销售人员只可以查看自己的销售订单或者查看其他人的销售订单(通过权限设置),请问该怎么设计?求高人帮忙. 解决方案 你可以做一个菜单权限.专门写一个菜单生成模块. 1.前端:用一个js框架例如:ztree,是一个很好用的菜单框架.它有成熟的API,自定义自己的菜单. 2.数据库:简单的可以设计三个表:用户表,角色表,菜单表.三个表分别为多对多关系.利用用户所拥有

移动产品的典型设计思路总结

[编者按]本文作者@xidea.交互设计师,半个产品经理.关注基于互联网的整体用户体验设计和产品设计.本文转载自作者的博客. 有很多移动互联网的产品经理和设计师都是从传统互联网转过去的,我们之前积累下的一些经验,有一些可以在移动侧继续使用,有一些则行不通,这或许要从移动互联网跟传统互联网的区别说起. 区别1.终端设备 传统互联网:主要的接入终端是计算机.计算机是高度标准化的设备,无论是Mac阵营,还是PC阵营(其他的架构不讨论了).具体体现在: 绝大部分个人计算机使用的硬件是标准化的,并且功能强

记一次和阿里某总监对话引发的思考:说说你框架的设计思路和优点亮点!

背景: 前不久和阿里的一个技术总监风动聊的时候,他问了这样一个问题:说说你框架的设计思路和优点? 话说,这个问题,5年前开始就一直经常出现在眼前,可我从没认真为它找出过答案! 于是,夜深深,我躺在床上,用笔记本,一边思考,一边打字,试着找寻! 这些年来,我的框架或作品,都快凑满十二个了,每个单独都可以说上好几天. 但如果时间只有半小时,我要怎么介绍呢?介绍哪些呢? 出现在脑海里的框架有三个:CYQ.Data.ASP.NET Aries.Taurus.MVC. 大概是因为近期的精力都在这上面吧的吧

OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)

  API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例,nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 Nova 能够提供的功能. 当客户需要执行虚机相关的操作,能且只能向 nova-api 发送 REST 请求. 这里的客户包括终端用户.命令行和 OpenStack 其他组件. 设计 API 前端服务的好处在于: 1. 对外提供统一接口,隐藏实现细节 2. API 提供 REST 标准调用服务

WebGIS中快速整合管理多源矢量服务以及服务权限控制的一种设计思路

 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方公司所掌控,当需要快速搭建一套能够对所有GIS数据,根据权限不同.需求不同.而进行展示的系统.为了避免在代码层面上过多的定制化开发,我们需要能提出一种可以整合管理多源矢量服务并进行权限控制的架构. 目前商业GIS软件中,Esri公司给出了其Portal产品,可以对arcgis Server发布的各

WIN8设计特性浅谈和腾讯微博MS首版设计思路分享

中介交易 SEO诊断 淘宝客 云主机 技术大厅 作者:dengxuecui(崔登学) miaotong(佟淼) 10月,一个收获的季节,微软的新一代操作系统window8悄然而至,同时,我们的微博客户端团队,也搭上了第一波win8应用的末班车,设计并推出了腾讯微博MS版本.本文将结合腾讯微博MS版本的设计过程以及对win8系统特性的认识,聊聊win8操作的平台的应用设计. 文章很长,请选择有价值的部分阅读,或许你敢把它读完呢- 本文索引: 1. Windows8-再构想 2. Win8的系统特性

求一个设计思路,关于登录地点

问题描述 求一个设计思路,关于登录地点 用C#做了一个程序,有前台后台,想在后台能够配置一共有几点登录地点 然后这些地点登录后,后台数据库可以有记录 解决方案 如果登陆点有固定的 IP,可以考虑使用 IP 做为每个固定点的登陆标志,再给每个登陆点分配密码. 这样每个登陆点使用自己的 IP 和密码登陆后台服务器,服务器就可以记录了.

至顶而下的设计思路:QQ空间V6.0版

文章描述:设计中的继承与颠覆:以QQ空间V6设计产品升级为例. 空间诞生6年了,终于再一次升级,迎来了革新的V6.0版,它是近年来最重要的版本升级,肩负着空间的战略转型,促进平台开放,提升营收与活跃用户的重任.所以这一版本的升级,我们改变从前自细节入手,直接优化流程与表现的设计思路.而是从全局的角度切入,重新思考平台的定位策略,进一步整合信息架构,颠覆表现层的交互体验,提升用户对QQ空间的品牌认知与情感认同.改变过去每一次升级后,新增加的特性与功能为空间造成的臃肿复杂的现状 所以引入了Jesse

产品设计思路:寻找产品的性格

文章描述:如何在设计中寻找产品的性格. 在前一文发表之后,我收到了不少邮件,有点出乎意料但又在猜想之中的是,这些邮件之中交互设计行业远多于工业设计行业,互联网行业远多于实体产品行业,而我仍想从事实体产品的工业设计. 但我也确实对交互设计对互联网非常感兴趣,甚至有意愿涉足,这种想法来源于对设计行业的变化的认同和理解.设计发生变化了,表面看或许是交互设计及相关设计的兴起,传统工业设计在一些情形上的隐退等这一些现象,但更深层的是整个设计的变化,不只是一个领域的设计替代另一个领域的设计,工业设计同样也发