这是我参与 11 月更文挑战的第 3 天,活动详情查看:2021最后一次更文挑战
解决办法
Hexo 项目内有个 public 文件夹,这个文件夹内的文件结构跟 hexo g 、 hexo d 编译部署到 GitHub 仓库之后的目录结构是一样的
如果在 public 下新建个 demo (名字随便取) 文件夹,把静态项目(假如是 demo.html )塞进去,就可以通过 username.github.io/demo/demo.html 直接访问这个静态项目了
如果要究其原因,请继续往下看
原理
前几天终于把拖了好久的博客搭出来了
部署: GitHub Pages ( GitHub 提供的一项服务,通过它可以在线上部署静态项目 )
框架: Hexo ( 博客内容管理框架,你只负责写 md ,它帮你生成页面,而且有丰富的主题可供选择 )
主题: NexT
这套搭配的搭建教程已有很多,这里就不班门弄斧了
我本来是想把自己写的一些游戏之类的静态项目通过 GitHub Pages 部署到线上,现在博客占住了入口,怎么同时部署博客和这些静态项目呢
首先来看看 GitHub Pages 是怎么把我们的静态代码部署到线上的
GitHub Pages 的原理
通常来说,我们想要通过输入网址,现实访问一个静态项目,需要以下条件:
-
项目代码本身(比如 index.html)
-
存放代码的能够线上访问得到的仓库
-
作为访问入口的域名
GitHub Pages 为我们提供了后面两个条件的支持
仓库
众所周知 GitHub 本身就是线上代码仓库
GitHub Pages 和 GitHub 通过约定,在把 GitHub 中名为 username.github.io ( username 是 GitHub 账户的用户名 )的仓库作为 GitHub Pages 指定仓库
域名
在 GitHub 上按 GitHub Pages 的要求( 详见 官网 )建立好指定仓库后,就可以通过 username.github.io 来访问该仓库了
直接访问 username.github.io 的话会相当于访问仓库的根目录,所以如果根目录下有 index.html 是会直接打开的( Hexo 就是利用了这一点 )
Hexo
Hexo 主要做了以下几件事:
-
提供博客的结构框架、主题、模板等
-
编译整个博客项目
-
提供一些附属功能的接口,比如流量统计、评论之类的
按照 官网文档 创建好项目之后,目录结构如下:
.
├── _config.yml
├── package.json
├── scaffolds
├── source (文章的 md 文件)
└── themes
创建文章、hexo g 编译生成、hexo d 部署到 GitHub 仓库之后的目录结构如下:
.
├── 2021/11/09/hello-world (按年月日分的文章页面)
├── archives(归档页面)
├── css
├── fancybox(静态 js 库)
├── js
└── index.html
可以看到,二者的目录结构并不相同,也就是说如果我们直接在 hexo 项目里面塞静态项目是不会被编译进生成的文件中的,也就是说在 GitHub 的仓库中不会有,自然也就无法线上访问的到了
所以现在的问题变成了,找到 hexo 项目中不会被编译的文件夹
通过测试,hexo 项目在第一次 hexo g 生成之后,项目内会多一个 public 文件夹,这个目录是不会被编译而直接塞进 GitHub 仓库根目录里面的,也就是说我们把静态项目都塞这里面,目的就达成了
我在里面塞了个原生 js 写的扫雷,感兴趣的可以玩玩:扫雷链接