掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
自2003年被首創(chuàng)以來,單頁(yè)Web應(yīng)用程序(Single Page Web Applications)已經(jīng)走過它的第15個(gè)年頭。如今,它已經(jīng)成為了現(xiàn)代JavaScript領(lǐng)域不可或缺的一部分。

成都創(chuàng)新互聯(lián)主營(yíng)廣水網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開發(fā),廣水h5小程序開發(fā)搭建,廣水網(wǎng)站營(yíng)銷推廣歡迎廣水等地區(qū)企業(yè)咨詢
在和許多開發(fā)人員的討論交流中,我發(fā)現(xiàn)他們對(duì)于單頁(yè)應(yīng)用程序的實(shí)際工作方式不甚了了。因此,我決定在此為大家科普一下,深入探究單頁(yè)Web應(yīng)用的工作原理與優(yōu)缺點(diǎn)。
什么是單頁(yè)應(yīng)用程序?
在我看來***的定義應(yīng)該是:?jiǎn)雾?yè)Web應(yīng)用程序是一種只需要將單個(gè)頁(yè)面加載到瀏覽器之中的Web應(yīng)用程序。
您可能已經(jīng)開始尋思:這到底意味著什么?一整套應(yīng)用程序居然只用一個(gè)頁(yè)面來提供服務(wù),這怎么夠用呢?
答案很簡(jiǎn)單。單頁(yè)Web應(yīng)用程序是圍繞著將單個(gè)頁(yè)面內(nèi)容進(jìn)行動(dòng)態(tài)重寫的概念所構(gòu)建。這與從服務(wù)器端加載過來的預(yù)渲染頁(yè)面有著本質(zhì)的不同。
通過采用這種方法,單頁(yè)Web應(yīng)用程序可以避免那些,在服務(wù)器上渲染各種頁(yè)面時(shí)所產(chǎn)生的中斷問題。因此,這就消除了一直以來困惑在Web開發(fā)業(yè)界的一個(gè)***問題:如何才能向用戶提供無縫的訪問體驗(yàn)。
既然聽起來這是一個(gè)很棒的主意,讓我們接著來看看它是如何運(yùn)作的,相信您一定會(huì)感到更為驚訝。
魔術(shù)是如何發(fā)生的?
在單頁(yè)Web應(yīng)用程序中,當(dāng)瀏覽器向服務(wù)器發(fā)出***個(gè)請(qǐng)求時(shí),服務(wù)器會(huì)返回一個(gè)index.html文件。就這么簡(jiǎn)單,不過這也是全程唯一提供HTML文件的一次。
該HTML文件為.js類型的文件準(zhǔn)備了一個(gè)腳本標(biāo)簽,而該標(biāo)簽正好可以被用來控制index.html頁(yè)面。由于所有后續(xù)的調(diào)用都只會(huì)返回JSON格式的數(shù)據(jù),因此應(yīng)用程序也就使用此類JSON數(shù)據(jù),來動(dòng)態(tài)地更新頁(yè)面。不過值得注意的是,該頁(yè)面將不再也永遠(yuǎn)不會(huì)被重新加載。
一旦應(yīng)用程序被啟動(dòng),客戶端(而不是服務(wù)器)就會(huì)通過處理,將數(shù)據(jù)轉(zhuǎn)換為HTML?;旧希蠖鄶?shù)現(xiàn)代單頁(yè)應(yīng)用框架都擁有一個(gè),能夠在瀏覽器中運(yùn)行的模板引擎,從而生成HTML。
通過與傳統(tǒng)的Web應(yīng)用程序相比較,你不難發(fā)現(xiàn):在傳統(tǒng)應(yīng)用程序中,在每次應(yīng)用程序調(diào)用服務(wù)器時(shí),服務(wù)器都需要渲染整個(gè)HTML頁(yè)面。相應(yīng)地,客戶端會(huì)接收到被渲染的頁(yè)面,并觸發(fā)整個(gè)頁(yè)面的刷新。因此在這種情況下,瀏覽器扮演的就是客戶端的角色。
為了更加直觀地說明兩種方法的不同之處,我們?yōu)槟鷾?zhǔn)備了如下的對(duì)比圖:
SPA有何優(yōu)勢(shì)?
SPA是否有缺點(diǎn)?
不過可喜的是,在Google官方的公告中(請(qǐng)參見:https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html),他們的搜索引擎如今已經(jīng)能夠爬取AJAX的各種調(diào)用了。
總而言之,我們需要認(rèn)真地考慮自己的項(xiàng)目用例與場(chǎng)景,才能判斷出哪一種方法最適合自身的應(yīng)用開發(fā)需求。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流