在和許多開發人員的討論交流中,我發現他們對於單頁應用程式的實際工作方式不甚了了。因此,我決定在此為大家科普一下,深入探究單頁Web應用的工作原理與優缺點。
【51CTO.com快譯】自2003年被首創以來,單頁Web應用程式(Single Page Web Applications)已經走過它的第15個年頭。如今,它已經成為了現代JavaScript領域不可或缺的一部分。
在和許多開發人員的討論交流中,我發現他們對於單頁應用程式的實際工作方式不甚了了。因此,我決定在此為大家科普一下,深入探究單頁Web應用的工作原理與優缺點。
什麼是單頁應用程式?
在我看來***的定義應該是:單頁Web應用程式是一種只需要將單個頁面加載到瀏覽器之中的Web應用程式。
您可能已經開始尋思:這到底意味著什麼?一整套應用程式居然只用一個頁面來提供服務,這怎麼夠用呢?
答案很簡單。單頁Web應用程式是圍繞著將單個頁面內容進行動態重寫的概念所構建。這與從伺服器端加載過來的預渲染頁面有著本質的不同。
通過採用這種方法,單頁Web應用程式可以避免那些,在伺服器上渲染各種頁面時所產生的中斷問題。因此,這就消除了一直以來困惑在Web開發業界的一個***問題:如何才能向用戶提供無縫的訪問體驗。
既然聽起來這是一個很棒的主意,讓我們接著來看看它是如何運作的,相信您一定會感到更為驚訝。
魔術是如何發生的?
在單頁Web應用程式中,當瀏覽器向伺服器發出***個請求時,伺服器會返回一個index.html文件。就這麼簡單,不過這也是全程唯一提供HTML文件的一次。
該HTML文件為.js類型的文件準備了一個腳本標籤,而該標籤正好可以被用來控制index.html頁面。由於所有後續的調用都只會返回JSON格式的數據,因此應用程式也就使用此類JSON數據,來動態地更新頁面。不過值得注意的是,該頁面將不再也永遠不會被重新加載。
一旦應用程式被啟動,客戶端(而不是伺服器)就會通過處理,將數據轉換為HTML。基本上,大多數現代單頁應用框架都擁有一個,能夠在瀏覽器中運行的模板引擎,從而生成HTML。
通過與傳統的Web應用程式相比較,你不難發現:在傳統應用程式中,在每次應用程式調用伺服器時,伺服器都需要渲染整個HTML頁面。相應地,客戶端會接收到被渲染的頁面,並觸發整個頁面的刷新。因此在這種情況下,瀏覽器扮演的就是客戶端的角色。
為了更加直觀地說明兩種方法的不同之處,我們為您準備了如下的對比圖:
SPA有何優勢?
SPA是否有缺點?
不過可喜的是,在Google官方的公告中(請參見:https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html),他們的搜尋引擎如今已經能夠爬取AJAX的各種調用了。
總而言之,我們需要認真地考慮自己的項目用例與場景,才能判斷出哪一種方法最適合自身的應用開發需求。
原文標題:How Single Page Web Applications Actually Work,作者:Saurabh Dashora
【51CTO譯稿,合作站點轉載請註明原文譯者和出處為51CTO.com】
【責任編輯:
龐桂玉TEL:(010)68476606】