关于hashHistory和browserHistory使用的区别
来源:互联网 发布:阿里斯托芬 云 原文 编辑:程序博客网 时间:2024/05/17 04:20
hashHistory和browserHistory
react-router是为react专门构建的一个路由插件,他可以帮助我们实现简单的单页应用效果,学习react的人,避免不了学习react-router的用法。
hashHistory : 不需要服务器配置,在URL生成一个哈希来跟踪状态,通常在测试环境使用,也可以作为发布环境使用。
import { Provider } from 'react-redux'import { Router, hashHistory} from 'react-router'ReactDOM.render(( <Provider store={store}> <Router history={hashHistory}> <Route> //你的route </Route> </Router> </Provider>), document.getElementById('root'));
browserHistory : 需要服务器端做配置,路径是真实的URL,是官方推荐首选。
客户端配置
import { Provider } from 'react-redux'import { Router, browserHistory } from 'react-router'ReactDOM.render(( <Provider store={store}> <Router history={browserHistory}> <Route> //你的route </Route> </Router> </Provider>), document.getElementById('root'));
服务端配置
const express = require('express')const path = require('path')const port = process.env.PORT || 8080const app = express()// 通常用于加载静态资源app.use(express.static(__dirname + '/public'))// 在你应用 JavaScript 文件中包含了一个 script 标签// 的 index.html 中处理任何一个 routeapp.get('*', function (request, response){ response.sendFile(path.resolve(__dirname, 'public', 'index.html'))})app.listen(port)console.log("server started on port " + port)
解释一下为什么browserHistory需要服务端配置,因为真实URL其实是指向服务器资源,比如我们经常使用的API接口,也是一个真实URL的资源路径,当通过真实URL访问网站的时候,第一次访问的是网站的域名,这个时候可以正常加载我们的网站js等文件,而用户手动刷新网页时,由于路径是指向服务器的真实路径,服务器端没有做路由配置,就会导致资源不存在,用户访问的资源不存在,返回给用户的是404错误。
通过hashHistory来生成的URL就不会出现这样的问题,因为他不是指向真实的路由。
2 0
- 关于hashHistory和browserHistory使用的区别
- react-router hashHistory&browserHistory
- 【react-router】hashhistory 与 browserhistory有什么区别
- 【React-Router】关于browserHistory出现did not match any routes的问题
- react使用hashHistory实现类似get方法带参数跳转
- 关于~和-的区别
- 关于 compareTo() , equals,和==使用上的区别
- 关于nextLine()和next()的使用,区别
- Spark: Spark和Hadoop的区别--关于资源使用
- QThread使用——关于run和movetoThread的区别
- QThread使用——关于run和movetoThread的区别
- QThread使用——关于run和movetoThread的区别
- QThread使用——关于run和movetoThread的区别
- 关于# 和 void的区别
- 说说&和&& |和||的区别 及关于位操作符的使用和总结
- &和&&的使用区别
- 关于定义动态数组的Preserve选项使用和不使用的区别的案例
- 关于C#下面的Invoke 和在WPF中使用的Dispatcher.Invoke的区别
- Python libvirt domain api
- java策略模式和工厂模式的区别
- 388. Longest Absolute File Path
- WPF附加属性控制TextBox的输入为金额格式
- POJ 1682 DP
- 关于hashHistory和browserHistory使用的区别
- Codevs1154 能量项链 ——2006年NOIP全国联赛提高组 区间dp
- Python学习笔记(6)--pass的用法
- 多边形的面积
- 没有性能谈体验都是耍流氓
- 【Codeforces Round #365 (Div. 2)】
- Swift3.0 info.plist文件访问权限汇总
- jQuery 参考手册 - CSS 操作
- Redis-3.2.4集群配置(RedisCluster+SpringBoot+Jedis)