技术资讯
从一个项目中来看三层架构
2008-08-06 10:47:00
这个项目到一开始的kickoff到现在,持续了很长的一段时间,现在差不多也接近了尾声,所以要好好做个总结,下�༒�面不会设计到太多技术层面上的东西,而是从前端构架这个角度来看待这个项目。
这里所说的三层就是:表示层,业务逻辑层和数据层。对于数据层,只需要知道后台返回过来是什么样格式的数据(这次约定是一段json格式的数据),𒊎更多的精力是放在业务逻辑层和表示层𝔉上面,我主要负责表示层,朱哥哥主要负责业务逻辑层,分工合作,也算是一种尝试吧,取得的效果还不错。那么不多说废话了,下面看具体实现(在命名上做了一定的改动,跟实际有点出入,只需关注其中的构架思想):
第一步:先看下最后的成果:
在页面只需引入一个合并好的js:merge.js,然后在实例化这个方法
var post = new Post(url,successFn,failureFn,false)这个就是最后三层结合的体现
url 就是获得数据的源地址,属于数据层
Post数据处理类,是属于业务逻辑层
successFn,faileFn 数据请求成功和失败调用的方法,是属于表示层
第二步:看下merge.js,它是一个js合并后的文件,考虑减少HTTP请求,在这里做了合并,merge.js的文件结构如下:
merge.js
- get.js(请求数据的基本方法)
- deal.js(数据请求以及请求管理的方法集合,可以参考这篇文章”异步跨域请求的请求的实现”)
业务逻辑层
- config.js(配置文件,包含一些参数配置以及一些渲染时用到的一些公有方法
- render0.js(渲染的方法,这里针对不同的页面,可以有多种不同的方法,但是前面三个文件是必须的)
表示层
config.js:
var config = {
"entrance":"//www.alibaba.com.cn/",
"noimg":{
"x100":"/uploads/allimg/c120922/134S143641F-12c4.gif",
"x150"://img.china.alibaba.com/images/cn/market/trade/list/
070423/nopic150.gif
},
.......
}
function doRed(str,key){...}//加红
function doSubstring(str,maxLength,type)//字符串截取
function doFitlerData(d){...}//数据过滤
.......
render0.js:
//渲染类
var Render = function(id,num){
//多种渲染方法
this.doRenderHeader=function(){......};
this.doRenderFooter=function(){.......};
this.doRenderImage=function(imgurl,url,title, item){......};
this.doRenderTitle=function(title, url,key,item){......};
this.doRenderItem=function(item, idx){
调用this.doRenderImage(),this.doRenderTitle()
};
this.doRenderBody=function(rets){
调用this.doRenderItem()
};
......
this.doRender=function(rets){
var html = [];
html[html.length] = this.doRenderHeader();
html[html.length] = this.doRenderBody(rets);
html[html.length] = this.doRenderFooter();
if(this.root)this.root.innerHTML = html.join(');
};
}
//数据请求时成功调用的方法
function successFn(o){
try{
var data = doFitlerData(o); //调用config.js里的方法
//实例化Render
var defaultRender = new Render("test",3);
defaultRender.doRender(data);
}catch(e){
}
}
//数据请求时调用失败的方法
function failureFn(){
alert("Failure");
}
这样的三层构架带来什么好处,首先是分工非常明确,我只要负责页面渲染(表示层)这一块,其他的我可以不去考虑。其次,程序与程序间的耦合度低了,相对程序本身的内聚度高了,业务逻辑层和表示层只有一个数据接口,那就是从业务逻辑层返回给表示层是什么样的数据以及数据的格式,从业务逻辑层这个层面考虑,里面的程序如何修改,只要返回的数据不变,对表示层是一点都没有影响,同理,针对不同的页面,表示层可以写很多渲染类,对业务逻辑层也是没有影响的,同时提起公有的方法,放到config.js中,提高了代码的重用性。最后,程序有较高的扩展性和可维护性。我想这些都是三层架构带给我们的好处吧。就讲到这吧,以上是对这次项目从构架的角度做一个总结,对三层架构还需要再去深入研究,个人觉得这个现在还💮是比较普及的,可以用这个思想来构架一个🐈项目,一个系统。
近期更新
- [2023-07-26 14:17:28] 加拿大预测网-在线预测:为品牌赋能,海外官网品牌数字化
- [2023-05-06 10:32:26] 加拿大预测网-♓在线预测:青岛网站建设公司,高端网站定制,一站式网站服务——力图数字科技
- [2023-04-27 13:47:54] 加拿大预测网-在线预测:高端定制网站建设——从满足预期到走向卓越
- [2023-04-11 09:17:49] 加拿大预测网-在线预测:H5页面设计开发——移动端传播利器
- [2022-11-16 10:11:43] 加拿大预测网-在线预测:windows2012程序在哪
- [2022-04-14 11:01:47] 加拿大预测网-在线预测:力图数字科技配套网站服务支持
- [2021-05-18 10:14:11] 加拿大预测网-在线预测:青岛网站建设的流程
- [2021-04-29 10:14:38] 加拿大预测网-在线预测:企业定制化官网建设项目
- [2021-03-05 10:34:45] 加拿大预测网-在线预测:移动互联时代房地产行业的微信小程序解决方案
- [2021-01-22 17:29:38] 加拿大预测网-在线预测:微信小程序有哪些优势?为什么要开发微信小程序?
- [2021-01-08 17:28:04] 加拿大预测网-在线预测:网站建设最容易忽略的人性化设计
- [2020-12-16 16:55:32] 加拿大预测网-在线预测:建设一个常规的公司网站建设成本大概是多少?
延伸阅读
- [2009-02-26 08:56:00] 信息架构专题整理
- [2009-04-09 08:28:00] 加拿大预测网-在线预测:怎样的面包屑导航更能体现整站架构
- [2008-11-27 08:18:00] 加拿大预测网-在线预测:博客架构的媒体局限
- [2008-11-01 09:39:00] 加拿大预测网-在线预测:网站背后的信息架构
- [2008-12-15 08:38:00] 加拿大预测网-在线预测:博客信息架构的优化建议
- [2008-10-14 11:06:00] 加拿大预测网-在线预测:网站架构之主页设计
- [2009-01-08 17:38:00] 加拿大预测网-在线预测:信息架构:内容策略的准则
- [2009-02-13 16:50:00] 加拿大预测网-在线预测:Web分析与信息架构
- [2009-03-02 17:57:00] 加拿大预测网-在线预测:Google地图和搜狗地图的信息架构
- [2008-11-01 09:38:00] 加拿大预测网-在线预测:(翻译)用扩展卡片分类技术获悉网站架构设计
- [2008-11-01 09:36:00] 加拿大预测网-在线预测:(翻译)用扩展卡片分类技术获悉网站架构设计1
解决方案
加拿大预测网-在线预测: 轮胎行业网站设计解决方案 加拿大预测网-在线预测: 机械行业网站设计解决方案 加拿大预测网-在线预测: 房地产行业网站设计解决方案 加拿大预测网-在线预测: 科技企业网站设计解决方案 加拿大预测网-在线预测: 电子家电网站设计解决方案 加拿大预测网-在线预测: 食品行业网站设计解决方案 加拿大预测网-在线预测: 集团公司网站设计解决方案 加拿大预测网-在线预测: 企事业单位网站设计解决方案 加拿大预测网-在线预测: 外贸行业网站设计解决方案 加拿大预测网-在线预测: 健身运动网站设计解决方案 加拿大预测网-在线预测: 美容与化妆品网站设计解决方案 加拿大预测网-在线预测: 建筑设计行业网站设计解决方案 加拿大预测网-在线预测: 物流行业网站设计解决方案