1、為什么前后端分離
????前后端通過ajax調(diào)用http請求接口合是,獲取json數(shù)據(jù),需約定好數(shù)據(jù)格式锭环,前后端分別部署聪全,是兩個工程
????前端和后端開發(fā)人員的分工明確,利于他們的術(shù)業(yè)專攻辅辩,不然的話难礼,前后端對接容易出錯
????不分離的話,后端服務(wù)器壓力太大玫锋,性能不好蛾茉,用戶體驗差
????好處:前后端分工明確,提升開發(fā)效率撩鹿;使用前端服務(wù)器谦炬,整體響應(yīng)速度塊,用戶體驗好节沦;減少后端服務(wù)器壓力吧寺,防止宕機(jī)等現(xiàn)象窜管。
2、前后端路由的區(qū)別
????路由就是根據(jù)不同的url展示不同的頁面或內(nèi)容稚机,研究室url到函數(shù)的映射
????后端路由:每次路由跳轉(zhuǎn)都會請求html頁面幕帆,項目過大時,請求時間長赖条,容易白屏失乾,用戶體驗差
????前端路由:項目使用期間,路由跳轉(zhuǎn)纬乍,頁面不刷新碱茁,不重新加載,簡單說就是更新視圖但不重新請求頁面仿贬;根據(jù)不同的url纽竣,跳轉(zhuǎn)到不同的錨點(diǎn),顯示不同的內(nèi)容茧泪;缺點(diǎn)蜓氨,使用瀏覽器的前進(jìn)、后退時队伟,會刷新頁面穴吹,沒有合理利用緩存;單頁面應(yīng)用前進(jìn)嗜侮、后退時港令,無法記住滾動位置。優(yōu)點(diǎn)锈颗,用戶體驗好顷霹,因為不用每次去請求頁面;前后端分離開發(fā)击吱,開發(fā)效率高
3淋淀、vue路由原理
? ? hash模式:每一次改變hash(window.location.hash),都會在瀏覽器訪問歷史中增加一個記錄姨拥。window.addEventListerner("hashChange", () => {}, false)
????history模式:History interface是瀏覽器歷史棧提供的api接口绅喉,通過back() go() forward()等方法渠鸽,讀取瀏覽器歷史棧中的記錄叫乌,進(jìn)行各種跳轉(zhuǎn)工作。H5中新增PushState()和ReplaceState()等接口徽缚,可以對瀏覽器歷史棧進(jìn)行操作憨奸。window.addEventListener("popState", () => {}, false)
? ? 區(qū)別:popState設(shè)置的新url可以原url不同源,二hashChange只能改變#后面的部分凿试;pushState(stateObject,title,URL)??popState可修改的stateObject類型較多排宰,而hashChange只能是短字符串似芝;popState還可以攜帶title,待后續(xù)使用板甘;popState設(shè)置的新舊url可以不一樣党瓮,頁面也會觸發(fā)跳轉(zhuǎn),二hashChange必須不一樣才能跳轉(zhuǎn)盐类;history 模式下寞奸,前端的 URL 必須和實際向后端發(fā)起請求的 URL 一致,不然會404在跳,需后端配合配置(配置try_files $uri $uri/ /index.html;)枪萄。