博客的搭建
博客分类
简介
博客就是一个用于发表文章,供网友阅读、留言的网站
博客类型
- 静态博客
- 静态博客只能展示文章内容,无法与读者进行交互
- 动态博客
- 不止可以展示静态文章,也可以添加各种交互功能,根据读者的操作展示不同内容
搭建方式
- 代码搭建
- 通过博客框架代码实现博客
- 博客平台
- 通过博客平台创建博客账户
静态博客搭建
简介
- 使用的技术
- 博客框架
Hexo - 博客主题
Butterfly - 部署平台
GitHub
- 博客框架
- 技术说明
- 博客框架 可以快速创建一个博客所具有的相关功能的代码框架
- 博客主题 可以为所创建的博客网站设置展现方式
- 部署平台 将博客网站放在服务器或相关平台,才可以被所有网友访问到
搭建
GitHub配置
GitHub pages 静态页面有两种创建方式
- 用户 GitHub pages
- 特点
- 只能创建一个
- 完整路径:https://xxx.github.io
- 配置
- 新建仓库
- 仓库名称:xxx.github.io
- xxx:github的用户名
- 点击仓库的设置
- 选择【代码和自动化】下的【页面】
- Code and automation——pages
- 选择代码所在分支
- 保存
- 特点
- 仓库 GitHub pages
- 特点
- 可以创建多个
- 完整路径:https://xxx.github.io/yyy
- 配置
- 新建仓库
- 仓库名称:yyy
- xxx:github的用户名
- yyy:仓库名称
- 点击仓库的设置
- 选择【代码和自动化】下的【页面】
- Code and automation——pages
- 选择代码所在分支
- 保存
- 特点
博客框架 Hexo
环境和工具
- Node.js
- git
- hexo-cli
安装
- Node.js
- 官网:http://nodejs.cn/
- 从官网下载 Node.js 安装包,进行安装即可
- git
- 官网:https://git-scm.com/
- 从官网下载git安装包,进行安装即可
- hexo-cli
- 官网:https://hexo.io/zh-cn/
- 通过安装的 Node.js 中包含的 npm 包管理工具下载 hexo-cli
npm i hexo-cli -g
- Node.js
搭建 Hexo 相关命令
- 初始化创建 Hexo 相关文件
hexo init - 打包博客内容
hexo g - 本地服务器中预览
hexo s- 指定临时端口:
hexo s -p 端口号
- 指定临时端口:
- 其他命令
- 清除缓存和生成的文件
hexo clean - 将打包代码发布到github
hexo d - 提交搜索信息
hexo algolia
- 清除缓存和生成的文件
- 初始化创建 Hexo 相关文件
配置 Hexo
- Hexo 配置文件 _config.yml 中,url 属性要设置为 gitHub pages 的完整路径,否则样式和js应用不上
博客主题 Butterfly
安装
- 通过 npm 包管理工具,从GitHub上下载
- GitHub地址:https://github.com/jerryc127/hexo-theme-butterfly
- 下载:
npm i hexo-theme-butterfly
配置到 Hexo
- 打开Hexo配置文件 _config.yml
- 修改参数 theme 的值为 butterfly
theme: butterfly
GitHub平台
创建 GitHub 仓库
- 仓库名称必须为 GitHub 账户登录身份 + github + io
xxxx.github.io
提交博客代码到 GitHub 仓库
- 提交的代码是在 Hexo 框架中 public 目录下的所有代码
- public 目录的生成方式,是调用 hexo 指令打包生成的部署文件
- 生成命令:
hexo d
使用博客
配置 Hexo
使用本地图片
- _config.yml 文件下,修改 post_asset_folder 为 true
post_asset_folder: true- 创建博文时候
hexo new 博文,会在博文相同目录 _posts 下,生成同名目录,图片即可放在此同名目录中 - 图片引用使用 标签插件 相关代码进行展示
{% asset_img [class names] slug [width] [height] [title text [alt text]] %}
配置博客
Butterfly配置文档
- 博客功能的相关配置,在 Butterfly GitHub上有详细说明
- 在 GitHub 中找到文档 Butterfly Docs

- 文档目录:Butterfly配置的所有分类

- 目录:Butterfly配置分类中,对应分类记录的相关功能的具体配置

添加搜索功能
- 查看 Butterfly 文档中,主题配置2 目录,搜索系统
- 创建托管搜索引擎 Algolia 账户
- 登陆后从官网首页点击 Dashboard 进入控制面板

- 创建 index

- 获取 API key 相关参数


- 修改 hexo 站点根目录下的 _config.yml,添加相关代码。
- 注意:permalink 需改为 path,搜索到文章即可打开相应博文,否则需要修改源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15algolia:
appId: "xxxx"
apiKey: "xxxxxxxxxxxxxxxxxx"
adminApiKey: "xxxxxxxxxxxxxxxxxxx"
chunkSize: 5000
indexName: "xxxxx"
fields:
- content:strip:truncate,0,500
- excerpt:strip
- gallery
- path[permalink]
- photos
- slug
- tags
- title
- 注意:permalink 需改为 path,搜索到文章即可打开相应博文,否则需要修改源码
- 安装 hexo-algoliasearch 模块,用来收集站点内容发送给 Aloglia
npm i hexo-algoliasearch -S - 配置 _config.butterfly.yml , algolia_search 配置部分,将enable 改为true
1
2
3
4algolia_search:
enable: true
hits:
per_page: 6 hexo g进行打包hexo algolia给algolia提交搜索信息- 发布
- 注意事项
- 本地服务可以正常显示搜索框,但是部署到服务器就不能显示,public/css/index.css 文件中少了相关搜索框样式。我的做法是将本地显示的样式,手动添加到 public/css/index.css 文件中。此种做法可以解决问题,但是不合理
- 使用命令
hexo clean清除了生成的文件和缓存,再生成新的public文件,再本地预览hexo s。public/css/index.css 文件中生成了正常的搜索框样式
自定义样式
参考资料 参考资料可以自定义代码样式和页面所有样式(比如修改了页面大小)
source 目录下创建的文件夹,打包后的项目根目录会生成相同目录,并且具有目录中的相同文件
- 修改 hexo 配置文件 _config.yml 的 highlight 选项
- 设置 butterfly 配置文件 _config.butterfly.yml 的
highlight_theme:false - source 目录下创建 self 文件夾
- self 文件夹下创建 .css 样式文件
- butterfly 配置文件添加 inject 选项
- 文件路径从域名之后开始, / 表示域名
1
2
3
4inject:
head:
- <link rel="stylesheet" href="/library/self/Kimbiedark.css">
- <link rel="stylesheet" href="/library/self/my.css">
- 文件路径从域名之后开始, / 表示域名
自定义侧边栏
参考资料- source 目录下创建 _data 文件夹
- _data 文件夹下创建 widget.yml 文件
- 文件中内容根据上面参考资料填写
- HTML选项内容
- 可以直接书写 HTML标签
- 也可以使用 script 标签引入JS脚本,使用JS脚本生成HTML标签字符串,字符串使用
document.write()函数进行显示1
2
3
4
5
6top:
- class_name:
id_name:
name: 常用笔记
icon: fas fa-heartbeat
html: <script type="text/javascript" src="/library/self/everyblog.js"></script>1
2
3
4
5
6
7
8var my_div = "<div class='my_everyblog_a'>"
for(i of my_blog){
var my_a = `<a target="_self" href="${i.url}">${i.name}</a>`
var my_br = "</br>"
my_div = my_div + my_a + my_br
}
my_div += "</div>"
document.write(my_div)
- 生成的 HTML 标签定义clss属性,在自定义的css文件中给其定义样式即可
博客文章
新建博客文章
hexo new 文件名- 博客文档在 _posts 目录下生成
hexo new page 目录名- 在 source 目录下新建目录,并在目录中生成 index.md 文件
- 分类页:
hexo new page categories - 标签页:
hexo new page tags - 友情链接:
hexo new page link
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蚂蚁图书馆!
