我2000年開始接觸互聯(lián)網(wǎng)上的一些具體制作,那時候也有flash,5.0,也有Gecko,還在netscape里面沒獨立出來,也有xml、js、css,粗看下來環(huán)境變化并不大,但是直到今天,web前臺開發(fā)還有很多變化,還有很多新的技術(shù)問題有待解決,甚至開發(fā)一個網(wǎng)站的時候,前臺也需要一個架構(gòu)來描述前臺模塊之間的關(guān)系,復(fù)雜程度不亞于后臺。
回顧一下,我自己經(jīng)歷過幾次轉(zhuǎn)變。先是flash轉(zhuǎn)html,純flash是沒啥意思的。然后是嘗試純xml/xsl,這種代碼寫出來很有成就感,但是直到今天,還是有瀏覽器兼容的問題,而且也不知道搜索引擎會不會索引它。再后來是html里面的div取代table,引入css2,的確靈活了,似乎一直沒有像dreamweaver里面操作table一樣方便的layout搭建工具。最后這波就是ajax了,突破了web體驗想象力的邊框,而且提供前后臺通過xml中間層徹底分離的能力。總的方向是,數(shù)據(jù)和表現(xiàn)分離,前臺和后臺分離。
這個過程中我們解決了一些問題,比如頁面寫好之后可以通過修改css更換它的style,無需頁面刷新就可以載入、保存數(shù)據(jù),同時,也出現(xiàn)了新的問題,xhtml/css編寫難度提高了,xhtml代碼被js所取代,復(fù)雜的明顯提高了,seo也出現(xiàn)了問題。
這些變化,改變了網(wǎng)站建設(shè)的工作流程和具體工作方式。原來做一個網(wǎng)站,策劃好每個頁面,然后美術(shù)設(shè)計,然后制作成html,然后嵌入腳本,如果這個時候需求變更了,就麻煩了,制作人員和開發(fā)人員會手忙腳亂的調(diào)整已經(jīng)嵌入了腳本的html。現(xiàn)在,策劃人員的工作首先就變了,原來死板的wireframe不適用了,我現(xiàn)在開始嘗試用虛線框來區(qū)分一個頁面中的多個表現(xiàn)階段。頁面制作出來以后可能也不是由制作人員首先做成html,而是前臺架構(gòu)師先設(shè)計一個架構(gòu),定義一些標準,比如用不用frame,地址欄如何在ajax下面隨著頁面變化而變化,如何處理后退,哪些模塊的數(shù)據(jù)用ajax哪些需要載入頁面,等等,然后在這個架構(gòu)下,才開始頁面制作,甚至跳過頁面制作,js人員直接用代碼搞定,頁面制作人員只負責css。
說到這里,我還是對seo的問題念念不忘。有人說這是搜索引擎應(yīng)該考慮的問題,我們走自己的路好了,我不能接受,因為我知道page rank上了8以后,能給一個網(wǎng)站帶來40%以上的額外流量,這里還不算會有多少新用戶會沉淀下來。所謂優(yōu)化,就是一種迎合的心態(tài),畢竟在這個階段,互聯(lián)網(wǎng)世界中搜索引擎?最大。這里我有一些思考,還沒經(jīng)過實踐。首先是google sitemap,多少應(yīng)該有點用途,不能太指望它;其次呢,是一種類似blogger.com的發(fā)布機制,再優(yōu)化一下,加入realtime和archive的概念。最新發(fā)表的帖子可以立即看,用的是realtime模式,動態(tài)生成;過去的帖子在后臺已經(jīng)轉(zhuǎn)變成靜態(tài)頁面了,屬于archive模式,這樣一來,把后臺提供的xml數(shù)據(jù)顯示為頁面的工作就由前臺js轉(zhuǎn)移到了后面的發(fā)布server,很多關(guān)鍵的內(nèi)容頁面就可以靜態(tài)化了。(頁面中嵌script在apache下面運行的方案不做討論,因為這樣的方案支撐不了海量訪問服務(wù))
這樣做會面臨一個問題,如果用戶修改了layout,一些div前后位置調(diào)整了,原來生成的archive頁面不適用了,怎么辦?可以先把archive清空,全部用realtime模式頂上,發(fā)布server閑的時候重新建立archive。嗯,似乎可以這樣搞定。