# Github Pages 中部署 SPA(路由单页应用)
Github Pages 特性的几点说明:
- 不支持 Rewrite,所以原则上来说,静态单页应用路由是无法实现的,因为刷新页面后就会报404错误
- 支持自定义404,那么我们就可以通过 404.html 来做点文章
参考该评论:[Github #408](https://github.com/isaacs/github/issues/408#issuecomment-216721113)
---
无论是 Vue、Angular、React,打包生成的静态单页应用,理论上来讲都是可以利用 404的特性 部署到 Github Pages 上的。
这里我做了一个示例:
可以直接访问查看效果,即便刷新页面也是能够响应的。支持嵌套路由、泛(Wildcard)路由及未找到(NoMatch)渲染。
有几个需要注意的细节讲一下:
## 1. 路由的设定
如果用的是自定义域名,则没有太大关系。但如果是一个非 xxx.github.io 的项目, 而是类似这样的入口路径 `xxx.github.io/xxx` 就需要特别注意一下路由的命名,需要带上特定项目名称作为前缀。
## 2. 静态资源的路径
我在做尝试时候发现一个奇怪的现象
```
/home
/about
/topics
```
这样一级的路由是可以访问的,但如果是
```
/topics/routing
/topics/xxx
```
这样路由页面,在刷新之后会变成大白板,一开始我以为是需要在对应目录下分别都创建一个 404.html 后来发现并不是这样,而是我静态资源加载错误,后来发现是因为 404 页面中引用的静态资源(.js 文件)是类似这样的加载方式:
```html