一個(gè)網(wǎng)站各個(gè)頁(yè)面的相同之處莫過(guò)于頭部、導(dǎo)航、尾部,每一個(gè)程序手都知道代碼重用性的好處。如果我們把這些文件都做成公用文件,那么將大大節(jié)省了維護(hù)成本。
大型網(wǎng)站的頭尾部分和導(dǎo)航部分一般都會(huì)做成靜態(tài)的公用文件。
尾部文件footer塊的內(nèi)容是關(guān)于、聯(lián)系方式、版權(quán)等內(nèi)容,直接做成靜態(tài)文件便可。
頭部文件header和導(dǎo)航menubar往往有兩種狀態(tài)。用戶未登錄狀態(tài),顯示的內(nèi)容是注冊(cè)、登錄等內(nèi)容。用戶已登錄狀態(tài),顯示內(nèi)容有“歡迎你,某某”、未讀消息數(shù)等。還有一些特別的導(dǎo)航鏈接也不一樣,比如“會(huì)員中心”的鏈接,未登錄時(shí)鏈到登錄頁(yè)面,而已登錄狀態(tài)則鏈到會(huì)員中心首頁(yè)。
我們已將這些塊做成了靜態(tài)文件,那么怎么處理這兩種狀態(tài)呢?剩下只能使用js來(lái)控制。在登錄頁(yè)面,當(dāng)驗(yàn)證用戶登錄成功時(shí)向用戶電腦寫入cookie,比如用戶呢稱用戶id等信息。如此我們就可以寫一段js讀取之前寫入的cookie,如果用戶信息存在就說(shuō)明用戶已登錄,再根據(jù)返回的結(jié)果以js動(dòng)態(tài)更改頭部文件及導(dǎo)航的內(nèi)容。這樣兩種狀態(tài)就實(shí)現(xiàn)了。
另外要說(shuō)一點(diǎn),這之中可能會(huì)涉及其它一些問(wèn)題。
大型網(wǎng)站往往有很多二級(jí)域名,這些二級(jí)域名之間要共用頭尾文件,那么就存在了跨域問(wèn)題。
跨域讀取cookie,這個(gè)解決辦法很簡(jiǎn)單,只要在寫入cookie時(shí)設(shè)置domain為根域名xxx.com,這樣所有的二級(jí)域都可訪問(wèn)了,甚至三級(jí)域名也行。
這些公用文件一般采用include的包含方式加入到各頁(yè)面中,但是這種包含只能包含本域名下的文件,那么其它二級(jí)域名如何共用一個(gè)文件呢?這里又涉及了跨域問(wèn)題,可以對(duì)服務(wù)器設(shè)置虛擬目錄或虛擬路徑。比如真實(shí)頭尾文件存在www.xxx.com/inc下,yy.xxx.com域名下的頁(yè)面怎么包含www.xxx.com/inc的文件呢?可以在yy.xxx.com下開一個(gè)虛擬目錄指向www.xxx.com下相應(yīng)的/inc目錄。這樣就做成了重用性,改一個(gè)www.xxx.com/inc下的文件,所有其它域名/inc下相應(yīng)文件也隨之更新了。
虛擬的辦法也可以解決ajax跨域的問(wèn)題,原理一樣。
新聞熱點(diǎn)
疑難解答
圖片精選