自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JSON隔離網(wǎng)站布局和頁面實(shí)際模塊的內(nèi)容載入

開發(fā) 前端
在項(xiàng)目中,有個(gè)這樣的需求:動(dòng)態(tài)維護(hù)頁面的布局,以及動(dòng)態(tài)載入布局容器中的具體模塊。本文將為大家講解如何利用JSON隔離網(wǎng)站布局和頁面實(shí)際模塊的內(nèi)容載入。

最開始的實(shí)現(xiàn)方式是,在服務(wù)端一次性獲取當(dāng)前頁面的布局結(jié)構(gòu),當(dāng)前頁面的所有功能模塊,同時(shí)通過循環(huán)檢索某一功能模塊屬于哪個(gè)容器并合理放置,***獲取具體功能模塊的實(shí)際內(nèi)容,一次性輸出完成頁面的顯示。

雖然解決了問題,但這種方式導(dǎo)致了單次請(qǐng)求返回?cái)?shù)據(jù)的急劇增大,特別是在頁面布局復(fù)雜、功能模塊繁多時(shí),尤其明顯。

經(jīng)過多方驗(yàn)證,我決定采取將布局構(gòu)建和內(nèi)容獲取進(jìn)行隔離、分批次獲取內(nèi)容的方式,以達(dá)到減小單次請(qǐng)求數(shù)據(jù)量的目的。具體步驟如下:

***步:采用常規(guī)方式,返回頁面布局HTML結(jié)構(gòu),同時(shí)也json方式,返回當(dāng)前頁面的所有功能模塊基本信息

布局HTML結(jié)構(gòu)示例

1 <div class="enjoosite_layout_container">
2   <div class="enjoosite_layout_item" columnindex="0"></div> 
3   <div class="enjoosite_layout_item" columnindex="1"></div>
4   <div class="enjoosite_layout_item" columnindex="2"></div>
5 </div>

同步加載的功能模塊JSON

var __widgets = [
  {"widgetId":64,"title":"靜態(tài)文本","widgetName":"statichtml",
"key":"77","columnIndex":0,"sortIndex":1},
  {"widgetId":62,"title":"EnjooSite | 熙杰科技知識(shí)庫",
"widgetName":"statichtml","key":"76","columnIndex":1,"sortIndex":1},
  {"widgetId":66,"title":"本頁說明","widgetName":"statichtml",
"key":"82","columnIndex":1,"sortIndex":2}
];

第二步:在客戶端,利用js,將功能模塊準(zhǔn)確放置如對(duì)應(yīng)的布局容器中

我在布局容器HTML結(jié)構(gòu)中,增加了columnindex屬性,在功能模塊的JSON配置中對(duì)應(yīng)了columnIndex屬性,因此利用此屬性,輔以jQuery的強(qiáng)大選擇功能,可以非常方便的將功能模塊放置入對(duì)應(yīng)容器,同時(shí)JSON配置中的sortIndex屬性可以確定同一容器中的先后順序。

第三步:利用jQuery的ajax方法,分批次異步加載具體功能模塊的實(shí)際內(nèi)容

我們可以看到,在功能模塊的JSON配置中,每一個(gè)功能模塊都具有:widgetName 和 key 2個(gè)屬性,widgetName屬性可以確定當(dāng)前功能模塊的實(shí)際類型,如上例中的"statichtml"表示靜態(tài)HTML文本模塊,而key屬性,則對(duì)應(yīng)于當(dāng)前模塊在系統(tǒng)業(yè)務(wù)邏輯中所對(duì)應(yīng)的唯一關(guān)鍵值,這個(gè)關(guān)鍵值需要配合功能模塊的具體類型進(jìn)行綜合應(yīng)用,以實(shí)現(xiàn)從數(shù)據(jù)庫或XML配置文件獲取內(nèi)容的目的。

在異步獲取功能模塊的實(shí)際內(nèi)容環(huán)節(jié),我采取了分批次加載的方式,如果同時(shí)發(fā)出內(nèi)容獲取的ajax連接超過10個(gè),那么后續(xù)的請(qǐng)求進(jìn)入等待隊(duì)列,等待前面的10個(gè)請(qǐng)求。當(dāng)前10個(gè)請(qǐng)求返回一個(gè)時(shí),則立即從等待隊(duì)列中提出一個(gè)進(jìn)行連接。這樣,始終以比較平緩的數(shù)據(jù)請(qǐng)求量連接服務(wù)器,而頁面內(nèi)容也始終以比較緩和的方式呈現(xiàn)。

這種方式還值得完善的地方就是,***能夠靈活設(shè)定,哪個(gè)功能模塊的加載具有高優(yōu)先級(jí)就更好了。呵呵呵,慢慢再完善了。

【編輯推薦】

  1. 基于XML和JSON設(shè)計(jì)的Flex
  2. 超越XML和JSON:YAML,Java開發(fā)人員的新選擇
  3. 利用JSON在JavaScript中實(shí)現(xiàn)枚舉
責(zé)任編輯:彭凡 來源: cnblogs
相關(guān)推薦

2010-09-14 08:53:06

DIVTable

2010-08-27 10:49:38

DIVtable

2010-08-24 10:26:47

DIV+CSS

2023-12-18 14:56:00

模塊化單體系統(tǒng)數(shù)據(jù)庫

2022-09-02 08:00:00

CSS開發(fā)框架

2010-08-16 09:32:01

DivCSS

2010-08-16 13:39:18

DIV+CSS

2011-06-27 17:32:20

2010-03-16 18:59:47

Python模塊

2010-03-19 14:59:00

python Stri

2009-07-21 13:14:27

Web頁面并行化網(wǎng)頁載入時(shí)間

2010-08-27 10:59:11

DIVTable

2021-12-03 09:01:36

PythonJson文件Python基礎(chǔ)

2018-12-06 14:56:46

微服務(wù)隔離熔斷

2010-01-05 18:14:17

.NET Framew

2010-08-27 13:58:06

DIV+CSS

2009-06-09 10:24:35

NetBeansStruts頁面布局

2009-10-14 11:38:14

數(shù)據(jù)中心網(wǎng)絡(luò)布局

2010-01-06 10:27:32

JSON數(shù)組

2009-12-03 20:15:13

模塊化路由器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)