Github Pages 特性的几点说明:
参考该评论:Github #408
无论是 Vue、Angular、React,打包生成的静态单页应用,理论上来讲都是可以利用 404的特性 部署到 Github Pages 上的。
这里我做了一个示例: https://js-cool.github.io/github-spa-demo/
可以直接访问查看效果,即便刷新页面也是能够响应的。支持嵌套路由、泛(Wildcard)路由及未找到(NoMatch)渲染。
有几个需要注意的细节讲一下:
如果用的是自定义域名,则没有太大关系。但如果是一个非 xxx.github.io 的项目, 而是类似这样的入口路径 xxx.github.io/xxx
就需要特别注意一下路由的命名,需要带上特定项目名称作为前缀。
我在做尝试时候发现一个奇怪的现象
/home
/about
/topics
这样一级的路由是可以访问的,但如果是
/topics/routing
/topics/xxx
这样路由页面,在刷新之后会变成大白板,一开始我以为是需要在对应目录下分别都创建一个 404.html 后来发现并不是这样,而是我静态资源加载错误,后来发现是因为 404 页面中引用的静态资源(.js 文件)是类似这样的加载方式:
<script src="./app.js">
从当前目录下寻找,所以 js 资源也404了,就自然加载不出来。把引用路径改为绝对路径后就 OK 了。
贴上源码,位于:https://github.com/js-cool/github-spa-demo
顺带着说明一波,该示例是用 HyperApp 实现,Parcel 打包。包含程序框架、路由、页面(JSX Templates)所有打包后,仅有10kb 大小。
后面我会再抽时间分享一些这样的东西,适合进阶玩家写出更极致简洁和高效兼顾的代码。