單頁應用 vs 多頁應用

2021-10-07 20:00:39 字數 1394 閱讀 1770

web專案可分為單頁應用 和 多頁應用。單頁應用,就是只有乙個頁面,其他內容,估計就是動態載入,用從載入其他頁面片段 + 請求後台 這種方式來完成。這麼一說,我之前做的,其實都是多頁應用。

相比之下,

單頁應用的優勢是什麼呢?

1、頁面切換非常快,不會出現白屏,還可以作出過渡效果

2、公用的js和css一次性載入,不浪費

3、良好的前後端分離,伺服器端只管響應資料請求,不用關心頁面渲染,壓力小,api重用性高

缺點呢?

1、首次載入慢。不難理解,這麼多東西要一下子載入,當然慢了。載入出來就好了。

2、不利於seo。其實,如果不是網際網路專案,可忽略不計

3、複雜,對開發要求高。也好理解,這麼多東西,都擠在乙個頁面上,怎麼控制,怎麼載入,十分考驗工夫。

依我看,前2條都不是什麼大問題,就是問題3,可能會限制單頁應用用於複雜系統。我沒有開發過單頁應用系統,但按我的理解,在大型、複雜的系統中,不宜採用單頁應用。單頁應用,最適合手機端,但從目前來看,手機端的應用,都比較簡單。也有可能出現一種混合模式,即乙個大型應用,會由多個單頁應用來構成。

速度快,體驗好這些不是最明顯的優勢,多頁應用努力一下,也能接近這個目標。我認為單頁應用最大的意義是使得前後端分離真正可以落地。曾幾何時,我從網上習得「前後端分離」一詞,躍躍欲試,蠢蠢欲動,搞了一把前後端分離,結果發現,頁面重用簡直就是惡夢,因為瀏覽器實在是太弱了,什麼模板頁之類的東西,其實都需要伺服器來完成。之後我認為,所謂的前後端分離,要界定究竟什麼是前後端?前端除了瀏覽器,其實還包括伺服器端執行的控制器。(見拙作:前後端分離)

但如果是單頁應用,就不一樣了。沒有所謂模板這個概念,只有乙個頁面,其餘都是片段。伺服器真的就是與渲染解耦,一心只負責資料響應就好。不過,工作只是由後端轉移到了前端而已。據說單頁應用,前端開發人員要多於伺服器端。你看看,控制器,檢視嗎,資料層,不亦樂乎,開心就好。

本質上,單頁應用就是乙個富(肥)客戶端。事物都是螺旋式發展的。2023年的時候,cs應用如日中天,bs架構應用方興未艾,但是bs架構當時的缺點是效能不高,ajax技術剛出來,並未普及,體驗也遠遠比不上cs的好。但那時cs和bs之爭已經如火如荼,微軟還出了個折中的產物:智慧型客戶端。智慧型客戶端就是個cs結構應用,但是它會自動更新,一定程度上彌補了cs部署更新工作量大的問題。後來的發展大家都看到了,cs日趨式微,bs成為霸主。當然啦,還是有flash啦、silverlight啦這類偽bs的富客戶端技術做無謂的掙扎,曇花一現,也同樣被拋棄。沒想到,10年一輪迴,現在,單頁應用這種既是bs又是富客戶端的模式出來了。

有點意思。

單頁應用和多頁應用

每一次頁面跳轉的時候,後台伺服器都會給返回乙個新的html文件,這種型別的 也就是多頁 也叫做多頁應用。為什麼多頁應用的首屏時間快?首屏時間叫做頁面首個螢幕的內容展現的時間,當我們訪問頁面的時候,伺服器返回乙個html,頁面就會展示出來,這個過程只經歷了乙個http請求,所以頁面展示的速度非常快。為...

6 4 多頁應用與單頁應用

每一次頁面的跳轉,後端都會返回乙個新的html檔案 首屏 頁面首個螢幕的內容展現出來的時間,因為訪問頁面的時候,伺服器返回html,然後頁面就會被展示出來,這個過程只經歷了乙個http請求,所以頁面展示的速度非常快 搜尋引擎是可以識別html中的內容的,而我們每乙個頁面,所有的內容都放在html中 ...

單頁應用SPA 多頁應用MPA

spa單頁應用 第一次進入頁面的時候會請求乙個html檔案,重新整理清除一下。切換到其他元件,此時路徑也相應變化,但是並沒有新的html檔案請求,頁面內容也變化了。原理是 js會感知到url的變化,通過這一點,可以用js動態的將當前頁面的內容清除掉,然後將下乙個頁面的內容掛載到當前頁面上,這個時候的...