# 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