技術(shù)資訊
從一個項目中來看三層架構(gòu)
2008-08-06 10:47:00
這個項目到一開始的kickoff到現(xiàn)在,持續(xù)了很長的一段時間,現(xiàn)在差不多也接近了尾聲,所以要好好做個總結(jié),下面不會設(shè)計到太多技術(shù)層面上的東西,而是從前端構(gòu)架這個角度來看待這個項目。
這里所說的三層就是:表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)層。對于數(shù)據(jù)層,只需要知道后臺返回過來是什么樣格式的數(shù)據(jù)(這次約定是一段json格式的數(shù)據(jù)),更多的精力是放在業(yè)務(wù)邏輯層和表示層上面,我主要負責表示層,朱哥哥主要負責業(yè)務(wù)邏輯層,分工合作,也算是一種嘗試吧,取得的效果還不錯。那么不多說廢話了,下面看具體實現(xiàn)(在命名上做了一定的改動,跟實際有點出入,只需關(guān)注其中的構(gòu)架思想):
第一步:先看下最后的成果:
在頁面只需引入一個合并好的js:merge.js,然后在實例化這個方法
var post = new Post(url,successFn,failureFn,false)這個就是最后三層結(jié)合的體現(xiàn)
url 就是獲得數(shù)據(jù)的源地址,屬于數(shù)據(jù)層
Post數(shù)據(jù)處理類,是屬于業(yè)務(wù)邏輯層
successFn,faileFn 數(shù)據(jù)請求成功和失敗調(diào)用的方法,是屬于表示層
第二步:看下merge.js,它是一個js合并后的文件,考慮減少HTTP請求,在這里做了合并,merge.js的文件結(jié)構(gòu)如下:
merge.js
- get.js(請求數(shù)據(jù)的基本方法)
- deal.js(數(shù)據(jù)請求以及請求管理的方法集合,可以參考這篇文章”異步跨域請求的請求的實現(xiàn)”)
業(yè)務(wù)邏輯層
- config.js(配置文件,包含一些參數(shù)配置以及一些渲染時用到的一些公有方法
- render0.js(渲染的方法,這里針對不同的頁面,可以有多種不同的方法,但是前面三個文件是必須的)
表示層
config.js:
var config = {
"entrance":"http://www.alibaba.com.cn/",
"noimg":{
"x100":"/uploads/allimg/c120922/134S143641F-12c4.gif",
"x150":http://img.china.alibaba.com/images/cn/market/trade/list/
070423/nopic150.gif
},
.......
}
function doRed(str,key){...}//加紅
function doSubstring(str,maxLength,type)//字符串截取
function doFitlerData(d){...}//數(shù)據(jù)過濾
.......
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){
調(diào)用this.doRenderImage(),this.doRenderTitle()
};
this.doRenderBody=function(rets){
調(diào)用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(');
};
}
//數(shù)據(jù)請求時成功調(diào)用的方法
function successFn(o){
try{
var data = doFitlerData(o); //調(diào)用config.js里的方法
//實例化Render
var defaultRender = new Render("test",3);
defaultRender.doRender(data);
}catch(e){
}
}
//數(shù)據(jù)請求時調(diào)用失敗的方法
function failureFn(){
alert("Failure");
}
這樣的三層構(gòu)架帶來什么好處,首先是分工非常明確,我只要負責頁面渲染(表示層)這一塊,其他的我可以不去考慮。其次,程序與程序間的耦合度低了,相對程序本身的內(nèi)聚度高了,業(yè)務(wù)邏輯層和表示層只有一個數(shù)據(jù)接口,那就是從業(yè)務(wù)邏輯層返回給表示層是什么樣的數(shù)據(jù)以及數(shù)據(jù)的格式,從業(yè)務(wù)邏輯層這個層面考慮,里面的程序如何修改,只要返回的數(shù)據(jù)不變,對表示層是一點都沒有影響,同理,針對不同的頁面,表示層可以寫很多渲染類,對業(yè)務(wù)邏輯層也是沒有影響的,同時提起公有的方法,放到config.js中,提高了代碼的重用性。最后,程序有較高的擴展性和可維護性。我想這些都是三層架構(gòu)帶給我們的好處吧。就講到這吧,以上是對這次項目從構(gòu)架的角度做一個總結(jié),對三層架構(gòu)還需要再去深入研究,個人覺得這個現(xiàn)在還是比較普及的,可以用這個思想來構(gòu)架一個項目,一個系統(tǒng)。
近期更新
- [2023-07-26 14:17:28] 為品牌賦能,海外官網(wǎng)品牌數(shù)字化
- [2023-05-06 10:32:26] 青島網(wǎng)站建設(shè)公司,高端網(wǎng)站定制,一站式網(wǎng)站服務(wù)——力圖數(shù)字科技
- [2023-04-27 13:47:54] 高端定制網(wǎng)站建設(shè)——從滿足預(yù)期到走向卓越
- [2023-04-11 09:17:49] H5頁面設(shè)計開發(fā)——移動端傳播利器
- [2022-11-16 10:11:43] windows2012程序在哪
- [2022-04-14 11:01:47] 力圖數(shù)字科技配套網(wǎng)站服務(wù)支持
- [2021-05-18 10:14:11] 青島網(wǎng)站建設(shè)的流程
- [2021-04-29 10:14:38] 企業(yè)定制化官網(wǎng)建設(shè)項目
- [2021-03-05 10:34:45] 移動互聯(lián)時代房地產(chǎn)行業(yè)的微信小程序解決方案
- [2021-01-22 17:29:38] 微信小程序有哪些優(yōu)勢?為什么要開發(fā)微信小程序?
- [2021-01-08 17:28:04] 網(wǎng)站建設(shè)最容易忽略的人性化設(shè)計
- [2020-12-16 16:55:32] 建設(shè)一個常規(guī)的公司網(wǎng)站建設(shè)成本大概是多少?
延伸閱讀
- [2008-11-27 08:18:00] 博客架構(gòu)的媒體局限
- [2009-02-26 08:56:00] 信息架構(gòu)專題整理
- [2009-04-09 08:28:00] 怎樣的面包屑導航更能體現(xiàn)整站架構(gòu)
- [2008-11-01 09:36:00] (翻譯)用擴展卡片分類技術(shù)獲悉網(wǎng)站架構(gòu)設(shè)計1
- [2008-11-01 09:38:00] (翻譯)用擴展卡片分類技術(shù)獲悉網(wǎng)站架構(gòu)設(shè)計
- [2009-02-13 16:50:00] Web分析與信息架構(gòu)
- [2009-01-08 17:38:00] 信息架構(gòu):內(nèi)容策略的準則
- [2009-03-02 17:57:00] Google地圖和搜狗地圖的信息架構(gòu)
- [2008-12-15 08:38:00] 博客信息架構(gòu)的優(yōu)化建議
- [2008-10-14 11:06:00] 網(wǎng)站架構(gòu)之主頁設(shè)計
- [2008-11-01 09:39:00] 網(wǎng)站背后的信息架構(gòu)
解決方案
輪胎行業(yè)網(wǎng)站設(shè)計解決方案 機械行業(yè)網(wǎng)站設(shè)計解決方案 房地產(chǎn)行業(yè)網(wǎng)站設(shè)計解決方案 科技企業(yè)網(wǎng)站設(shè)計解決方案 電子家電網(wǎng)站設(shè)計解決方案 食品行業(yè)網(wǎng)站設(shè)計解決方案 集團公司網(wǎng)站設(shè)計解決方案 企事業(yè)單位網(wǎng)站設(shè)計解決方案 外貿(mào)行業(yè)網(wǎng)站設(shè)計解決方案 健身運動網(wǎng)站設(shè)計解決方案 美容與化妝品網(wǎng)站設(shè)計解決方案 建筑設(shè)計行業(yè)網(wǎng)站設(shè)計解決方案 物流行業(yè)網(wǎng)站設(shè)計解決方案
TAGS關(guān)鍵字
力圖 視覺靈感 新的元素 青島黃島、紅島網(wǎng)站建設(shè)公司 青島網(wǎng)站案例 微信開發(fā) 青島網(wǎng)絡(luò)公司 青島網(wǎng)站建設(shè)基礎(chǔ)知識 H5 交互設(shè)計 舒適的界面 搜索引擎 企業(yè)建站 網(wǎng)站交互設(shè)計 青島flash網(wǎng)站 英文網(wǎng)站建設(shè) 如何做網(wǎng)站優(yōu)化 HTML5 網(wǎng)站設(shè)計趨勢 網(wǎng)站視覺 海信網(wǎng)絡(luò)科技 青島網(wǎng)站設(shè)計哪家好 搜索引擎蜘蛛 青島網(wǎng)站優(yōu)化 青島高端網(wǎng)站設(shè)計公司哪家好 IT資訊 網(wǎng)站建設(shè)的步驟有哪些 青島海洋投資集團 青島高端網(wǎng)站建設(shè) 網(wǎng)站建設(shè),手機網(wǎng)站