Open MrSeaWave opened 3 years ago
解释一下为什么browserHistory需要服务端配置,因为真实URL其实是指向服务器资源,比如我们经常使用的API接口,也是一个真实URL的资源路径,当通过真实URL访问网站的时候,第一次访问的是网站的域名,这个时候可以正常加载我们的网站js等文件,而用户手动刷新网页时,由于路径是指向服务器的真实路径,服务器端没有做路由配置,就会导致资源不存在,用户访问的资源不存在,返回给用户的是404错误。 通过hashHistory来生成的URL就不会出现这样的问题,因为他不是指向真实的路由。
多页面模式,就是多个HTML页面之间的操作,浏览器会通过自身的history处理好页面间的操作,
单页面模式,对于浏览器来说只有一个HTML页面,任何操作都在同一个页面内,浏览器无法监控到页面跳转(实际只是内容改变,路径没变)
在单页面模式下使用browserHistory 的问题是:只有一个真实的html页面,是无法体现出html页面之间跳转的效果的
这时就需要使用服务器配合,模拟出多个HTML页面,从而实现浏览器真实的页面跳转效果
browserHistory
需要server
端支持。 而使用hashHistory
的时候, 因为url 中 #
符号的存在,从/#/
到/#/user/list
浏览器并不会去发送一次request
react-router
自己根据url
去render
相应的模块。 而使用browserHistory
的时候,浏览器从/
到/user/list
是会向server
发送request
的。所以server
端是要做特殊配置的。