成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端學(xué)習(xí)之路之SPA(單頁(yè)應(yīng)用)設(shè)計(jì)原理

Crazy_Coder / 703人閱讀

摘要:設(shè)計(jì)設(shè)計(jì)意義前后端分離減輕服務(wù)器壓力增強(qiáng)用戶體驗(yàn)預(yù)渲染優(yōu)化前后端分離前端做業(yè)務(wù)邏輯,后端處理數(shù)據(jù)和接口,耦合度減少,開發(fā)效率提高。響應(yīng)瀏覽器的前進(jìn)和后退。代碼實(shí)現(xiàn)演示圖結(jié)上就是設(shè)計(jì)原理愿你成為終身學(xué)習(xí)者

SPA設(shè)計(jì) 1、設(shè)計(jì)意義

前后端分離

減輕服務(wù)器壓力

增強(qiáng)用戶體驗(yàn)

Prerender預(yù)渲染優(yōu)化SEO

前后端分離:前端做業(yè)務(wù)邏輯,后端處理數(shù)據(jù)和接口,耦合度減少,開發(fā)效率提高。

減輕服務(wù)器壓力:一個(gè)頁(yè)面不用每次都去請(qǐng)服務(wù)端,當(dāng)一個(gè)應(yīng)用較復(fù)雜,有10多個(gè)頁(yè)面的時(shí)候,那么每個(gè)用用戶操作幾個(gè)頁(yè)面,只需要請(qǐng)求一次,這會(huì)在很大程度上減輕服務(wù)器壓力。

增強(qiáng)用戶體驗(yàn):比如說當(dāng)從一個(gè)首頁(yè)跳轉(zhuǎn)詳情頁(yè),如果按照傳統(tǒng)頁(yè)面的方式,相當(dāng)于在首頁(yè)請(qǐng)求,在去服務(wù)端請(qǐng)求另一個(gè)詳情頁(yè),每一次的連接,都要消耗DNS以及TCP建立連接再加上頁(yè)面?zhèn)鬏數(shù)倪^程還要包括接口響應(yīng)的時(shí)間,這個(gè)都是用戶可以感受的到的,那么當(dāng)使用單頁(yè)面的時(shí)候,不存在多次下載頁(yè)面的時(shí)間,只有接口消耗的時(shí)間,這在很大程度上增強(qiáng)了用戶體驗(yàn)。

缺點(diǎn):SPA關(guān)于SEO方面有些弱勢(shì),對(duì)于搜索引擎不是特別友好,那怎么彌補(bǔ)呢?

Prerender預(yù)渲染優(yōu)化SEO:這個(gè)主要針對(duì)SPA在SEO弱勢(shì)方面上的處理,這篇文章主要介紹處理方法,大家可去了解一下。

2、工作原理

History API

Hash

?SPA真正的工作原理是什么?大家有可能在使用vue的話,基本都會(huì)使用Router插件,用這個(gè)插件頁(yè)面跑起來沒問題,但是這個(gè)插件背后的工作原理是否清楚,有幾種方式實(shí)現(xiàn)?
實(shí)現(xiàn)方面的主要有兩大類History API和Hash實(shí)現(xiàn),那么這兩種之間有什么區(qū)別呢?
第一個(gè)History API更加優(yōu)雅,但是對(duì)瀏覽器是有一定要求的,第二個(gè)Hash看上去不是特別的優(yōu)雅,但是它是兼容性最好的方案。

2.1) History API

如上圖,左邊對(duì)應(yīng)的入口一,二,三,對(duì)應(yīng)頁(yè)面上的頁(yè)面一,二,三的,一個(gè)入口點(diǎn)進(jìn)去,應(yīng)該對(duì)應(yīng)一個(gè)頁(yè)面,這個(gè)是入口的作用。那么它們之間是怎么關(guān)聯(lián)上的?比如我點(diǎn)擊了入口二,怎么讓頁(yè)面二打開,記住這里的頁(yè)面二打開是不要請(qǐng)求服務(wù)端,是通過本地的JS控制,第是第一步。
第二個(gè)是點(diǎn)擊瀏覽器的前進(jìn)后退或者是其它控制,它怎么回到某個(gè)入口對(duì)應(yīng)的頁(yè)面上去,這是第二步。
以上二步就是SAP要控制的動(dòng)作,如上圖中間部分 History對(duì)象,就是實(shí)現(xiàn)的一個(gè)中間橋梁,History對(duì)象下的兩個(gè)小東西onpopstatepushState,這是來實(shí)現(xiàn)這兩步的。

pushState:創(chuàng)建一個(gè)歷史記錄。 onpopstate:響應(yīng)瀏覽器的前進(jìn)和后退。 代碼實(shí)現(xiàn)

說明:上圖主要有兩個(gè)a標(biāo)簽,a.html,b.html,js注冊(cè)a標(biāo)簽點(diǎn)擊事件,通過history.pushState創(chuàng)建一個(gè)歷史記錄進(jìn)行頁(yè)面切換,pushState主要有三個(gè)參數(shù),第一個(gè)就是傳送參數(shù),第二個(gè)是頁(yè)面的標(biāo)題,第三個(gè)就是跳轉(zhuǎn)URL。

然后通過監(jiān)聽onpopstate,就可以知道瀏覽器前進(jìn)和回退一些信息。

演示圖:

如上,當(dāng)我點(diǎn)擊a.hmtl地址欄的就發(fā)生變化,頁(yè)面切到了a.html,但頁(yè)面不會(huì)刷新,同理點(diǎn)擊b.html效果也是一新。


當(dāng)我們點(diǎn)擊回退的時(shí)候,就會(huì)顯示具體信息了。

2.2) Hash

其實(shí)hash與History流程差不多,不同的是,橋梁發(fā)生了變化。大家知道,一個(gè)URL上有post,path,search還有hash。那么hash是怎么做的呢?

當(dāng)我們改變一個(gè)地址的時(shí)候,去修改hash,然后監(jiān)聽hashchange事件,你就知道頁(yè)面的地址發(fā)生的變化,然后在這個(gè)事件里面去做相應(yīng)的動(dòng)作,就能完成剛才所說的這種頁(yè)面的切換。

代碼實(shí)現(xiàn)

演示圖:

結(jié)上就是SPA設(shè)計(jì)原理
愿你成為終身學(xué)習(xí)者

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93609.html

相關(guān)文章

  • 前端學(xué)習(xí)SPA(單頁(yè)應(yīng)用)設(shè)計(jì)原理

    摘要:設(shè)計(jì)設(shè)計(jì)意義前后端分離減輕服務(wù)器壓力增強(qiáng)用戶體驗(yàn)預(yù)渲染優(yōu)化前后端分離前端做業(yè)務(wù)邏輯,后端處理數(shù)據(jù)和接口,耦合度減少,開發(fā)效率提高。響應(yīng)瀏覽器的前進(jìn)和后退。代碼實(shí)現(xiàn)演示圖結(jié)上就是設(shè)計(jì)原理愿你成為終身學(xué)習(xí)者 SPA設(shè)計(jì) 1、設(shè)計(jì)意義 前后端分離 減輕服務(wù)器壓力 增強(qiáng)用戶體驗(yàn) Prerender預(yù)渲染優(yōu)化SEO 前后端分離:前端做業(yè)務(wù)邏輯,后端處理數(shù)據(jù)和接口,耦合度減少,開發(fā)效率提高。 ...

    Barry_Ng 評(píng)論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...

    happen 評(píng)論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...

    余學(xué)文 評(píng)論0 收藏0
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁(yè)面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...

    Jochen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<