单页应用 vs 多页应用
web項(xiàng)目可分為單頁應(yīng)用 和 多頁應(yīng)用。單頁應(yīng)用,就是只有一個(gè)頁面,其他內(nèi)容,估計(jì)就是動(dòng)態(tài)加載,用從加載其他頁面片段 + 請(qǐng)求后臺(tái) 這種方式來完成。這么一說,我之前做的,其實(shí)都是多頁應(yīng)用。
相比之下,
單頁應(yīng)用的優(yōu)缺點(diǎn)
單頁應(yīng)用的優(yōu)勢(shì)是什么呢?
1、頁面切換非???#xff0c;不會(huì)出現(xiàn)白屏,還可以作出過渡效果2、公用的js和css一次性加載,不浪費(fèi)3、良好的前后端分離,服務(wù)器端只管響應(yīng)數(shù)據(jù)請(qǐng)求,不用關(guān)心頁面渲染,壓力小,API重用性高缺點(diǎn)呢?
1、首次加載慢。不難理解,這么多東西要一下子加載,當(dāng)然慢了。加載出來就好了。2、不利于SEO。其實(shí),如果不是互聯(lián)網(wǎng)項(xiàng)目,可忽略不計(jì)3、復(fù)雜,對(duì)開發(fā)要求高。也好理解,這么多東西,都擠在一個(gè)頁面上,怎么控制,怎么加載,十分考驗(yàn)工夫。依我看,前2條都不是什么大問題,就是問題3,可能會(huì)限制單頁應(yīng)用用于復(fù)雜系統(tǒng)。我沒有開發(fā)過單頁應(yīng)用系統(tǒng),但按我的理解,在大型、復(fù)雜的系統(tǒng)中,不宜采用單頁應(yīng)用。單頁應(yīng)用,最適合手機(jī)端,但從目前來看,手機(jī)端的應(yīng)用,都比較簡單。也有可能出現(xiàn)一種混合模式,即一個(gè)大型應(yīng)用,會(huì)由多個(gè)單頁應(yīng)用來構(gòu)成。
單頁應(yīng)用的意義
速度快,體驗(yàn)好這些不是最明顯的優(yōu)勢(shì),多頁應(yīng)用努力一下,也能接近這個(gè)目標(biāo)。我認(rèn)為單頁應(yīng)用最大的意義是使得前后端分離真正可以落地。曾幾何時(shí),我從網(wǎng)上習(xí)得“前后端分離”一詞,躍躍欲試,蠢蠢欲動(dòng),搞了一把前后端分離,結(jié)果發(fā)現(xiàn),頁面重用簡直就是惡夢(mèng),因?yàn)闉g覽器實(shí)在是太弱了,什么模板頁之類的東西,其實(shí)都需要服務(wù)器來完成。之后我認(rèn)為,所謂的前后端分離,要界定究竟什么是前后端?前端除了瀏覽器,其實(shí)還包括服務(wù)器端運(yùn)行的控制器。(見拙作:前后端分離)
但如果是單頁應(yīng)用,就不一樣了。沒有所謂模板這個(gè)概念,只有一個(gè)頁面,其余都是片段。服務(wù)器真的就是與渲染解耦,一心只負(fù)責(zé)數(shù)據(jù)響應(yīng)就好。不過,工作只是由后端轉(zhuǎn)移到了前端而已。據(jù)說單頁應(yīng)用,前端開發(fā)人員要多于服務(wù)器端。你看看,控制器,視圖嗎,數(shù)據(jù)層,不亦樂乎,開心就好。
本質(zhì)上,單頁應(yīng)用就是一個(gè)富(肥)客戶端。事物都是螺旋式發(fā)展的。2000年的時(shí)候,CS應(yīng)用如日中天,BS架構(gòu)應(yīng)用方興未艾,但是BS架構(gòu)當(dāng)時(shí)的缺點(diǎn)是性能不高,ajax技術(shù)剛出來,并未普及,體驗(yàn)也遠(yuǎn)遠(yuǎn)比不上CS的好。但那時(shí)CS和BS之爭已經(jīng)如火如荼,微軟還出了個(gè)折中的產(chǎn)物:智能客戶端。智能客戶端就是個(gè)CS結(jié)構(gòu)應(yīng)用,但是它會(huì)自動(dòng)更新,一定程度上彌補(bǔ)了CS部署更新工作量大的問題。后來的發(fā)展大家都看到了,CS日趨式微,BS成為霸主。當(dāng)然啦,還是有flash啦、silverlight啦這類偽BS的富客戶端技術(shù)做無謂的掙扎,曇花一現(xiàn),也同樣被拋棄。沒想到,10年一輪回,現(xiàn)在,單頁應(yīng)用這種既是BS又是富客戶端的模式出來了。
有點(diǎn)意思。
總結(jié)
以上是生活随笔為你收集整理的单页应用 vs 多页应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 OpenCV 和 Python 从
- 下一篇: 何谓南桥与北桥