国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

javascript - 關于js高級程序中的問題

瀏覽:102日期:2023-02-10 17:59:42

問題描述

我在看到javascript高級程序設計(第三版)第492頁的時候,有個疑問

javascript - 關于js高級程序中的問題

當我用了'假'URL以后,刷新了,會返回404錯誤,除非我在Web服務器上有個真的這樣的鏈接,那用戶難免去刷新頁面,難道我真的要去搞一個真的文件對應真的鏈接.那還要這個pushState()有什么用,豈不是很不方便嗎

問題解答

回答1:

pushState主要用在SPA應用中, 回答題主的問題:

出現404。這是因為PushState模式下的URL里面沒有#,瀏覽器會真的向服務端發起一個請求,而我們在服務端并沒有對應于這個路徑的資源。

但是并不需要在服務器上有一個真鏈接(會把人累死), 只需要更改一下服務器的配置, 讓不存在的頁面(404)重定向到根路由即可.

以Tomcat為例,配置非常簡單,只要在你的項目的web.xml里面加上以下配置就可以了:

<error-page><error-code>404</error-code><location>/</location> </error-page>

這樣一來,對于找不到資源的路徑,Tomcat會全部重定向到根路徑上去,這樣你的前端框架不論是angular/vue/react/backbone 就可以在前端自己處理請求的URL了。

對于其它類型的服務端,例如nginx/apache/IIS,請參考這篇文檔:https://github.com/angular-ui...

來源: https://my.oschina.net/mumu/b...

回答2:

按刷新會以當前瀏覽器的url發請求到服務器。

例如你通過pushState()把當前地址變成 boomshaklaka.com/boom點刷新后服務器收到這個地址發現不存在會返回404的。

回答3:

首先你要理解前端路由跟后端路由的區別。

在只有后端路由的情況下,你請求的所有頁面都是由后端返回給你的,這時所有路由都是由后端控制。

但有時侯我們不希望刷新頁面,但url也想它改變,比如SPA應用。這時候我們就需要一個前端路由,這個pushState在這就起這個作用。

回答4:

javascript - 關于js高級程序中的問題

首先我還是習慣后臺處理路由, 我就以后臺路由舉例子:

首先url 可以任意去定義, 至于你想關聯項目中的哪個文件, 任意

<action name='index'> <result>xxx/index.jsp</result></action><action name='login'> <result>xxx/index.jsp</result></action>

可以由不同的action指向同一個頁面, 所以你的網站要至少保證有一個頁面吧

其次:

在 HTML 文件中, history.pushState() 方法向瀏覽器歷史添加了一個狀態。

更多是用來設置一個錨點:

window.location = '#foo';

至于文中說的404還是因為路由的指向有問題, 沒有找到資源.

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产成人精品久久二区二区 | 久久综久久美利坚合众国 | 免费看特级淫片日本 | 欧美一级免费大片 | 污到下面流水的视频 | 欧美成人久久一级c片免费 欧美成人看片黄a免费 | 911精品国产亚洲日本美国韩国 | 大臿蕉香蕉大视频成人 | 99免费在线观看视频 | 日本人成18在线播放 | 国产色视频在线观看免费 | 最新国产精品亚洲 | 亚洲一区日韩一区欧美一区a | 亚洲专区在线视频 | 国产区精品 | 日韩经典一区 | 夜色福利久久久久久777777 | 成人欧美在线观看 | 欧美极品在线视频 | 夜色伊人 | 久久精品国产一区二区 | 成年男女免费视频网站播放 | 国产成人免费高清视频网址 | 欧美韩国日本 | 久久精品中文字幕首页 | 国产高清一区二区三区免费视频 | 在线中文字幕视频 | 九九视频免费在线观看 | 久久综合九色综合欧洲色 | 国产亚洲欧美日韩在线看片 | 香港台湾经典三级a视频 | 国产v日韩v欧美v精品专区 | 黄色成人免费网站 | 午夜欧美成人 | 九九视频在线观看视频6偷拍 | 草在线视频 | 免费在线国产视频 | 欧美成人精品一区二区三区 | 不卡无毒免费毛片视频观看 | 成人国产精品免费视频 | 中文字幕在线观看不卡视频 |