react|react browserHistory 完整部署方案
目前主流项目方案 基本都是 采用SPA(单页应用)架构去做的 那么url 基本是基于hash去做路由的. 这种不存在兼容性问题
为了url 清爽干净的体验 可以替换成 history model 3大框架都有自己的配置方式 .如果基于react-router 4 可以使用 官方提供的browserHistory去做。
【react|react browserHistory 完整部署方案】实现一个完整 history mode 需要以下步骤:
假设我们部署项目名webapp
部署后的首页 url为 http://www.xxx.com/webapp
1. 指定 basename
可以在 BrowserRouter 中进行指定
为了在 非react组件中也能使用router 进行导航 推荐将router 封装一个服务,
BrowserRouter 和 router服务 选择其中一种即可.
router服务 : RouterHelper.js
import createHistory from 'history/createBrowserHistory';
export const history = createHistory(
{
// 基链接
basename: "/webapp",
}
);
这样在任意类中就可以引入router对象进行 路由导航,这种方式下basename指定需要在 createHistory中配置.
import {history} from "@common/class/RouterHelper";
在需要使用的类地方 可以导出使用。
一个完整的router服务的例子:
import {history} from "@common/class/RouterHelper";
const routes = [
{
path: "/account/user",
component: AccountManagerView,
meta : {title : "账户列表"},},
{
path: "/account/userDetail",
component: AccountManagerDetailView,
meta : {title : "账户详情"},},];
import {Router ,Route, withRouter, Switch } from 'react-router-dom'
{
routes.map((route,i)=> )
}
找不到此页面} />
ps : 注意使用router 服务方式 需要将history注入到 Router对象里面
2.nginx配置
将项目构建后 部署到nginx 静态服务器上面
文章图片
image.png
服务器上文件夹为 : webapp
#webapp
location /webapp {
alias /home/static/webapp/;
indexindex.html;
try_files $uri/webapp/index.html;
}
alias 指定资源访问的目录
try_files 当前uri 如果未找到则重新定位到 /webapp/index.html下;
推荐阅读
- react|react 安装
- React.js学习笔记(17)|React.js学习笔记(17) Mobx
- React.js的表单(六)
- SpringBoot整合MongoDB完整实例代码
- 【React|【React Native填坑之旅】从源码角度看JavaModule注册及重载陷阱
- react-navigation|react-navigation 动态修改 tabBar 样式
- 音乐之声(二)
- Flutter|Flutter SwiftUI React 对比
- React|React refs和onRefs的使用
- 手写|手写 React-Native 方法调用式的 Modal 弹框、Toast 提示