Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
为什么要做博客?
提升自我
不管是自己开发还是使用开源博客,从申请网站、申请域名、网站发布等过程中你会受益良多,当博客搭建好以后你就不再是一个只会复制粘贴的码农了。
写博客会巩固自己掌握的知识点,并且提升归纳总结与表达能力。
还有,好的博客是面试要用。。。
获取动力
当你一篇博客获赞成千上万时,你会更有动力写下去的。
尤其是一个系列或者一个项目,完整的分享出来,那种感觉真的是成就满满。
传播知识
当我们还是小白的时候,看各位大神博客学知识,当我们遇到问题的时候,一个好的博客能瞬间解决我们的问题。
现如今我们也掌握了更高级的知识与技能,是时候分享出来造福他人了。
为什么选择 hexo
快速、简洁且高效的博客框架
基础搭配:Git + Github Pages + Hexo
- 优点
- 免费 - GitHub
- 快速 - Node 运行环境、前端个人站点首选
- 简洁 - MarkDown
- 轻量 - 全部静态文件
- 支持导入 WordPress 等博客
不足
- 多媒体管理较难
配置环境/初始化项目
1.安装 nodejs
2.创建项目
1 | npm install hexo-cli -g |
编写文章
1 | # 创建文章 |
发布到 github
在 github 创建仓库 名称为:cxvh.github.io
创建成功后的 git 地址:https://github.com/cxvh/cxvh.github.io
1 | npm install --save hexo-deployer-git |
打开 _config.yml 文件
- 找到
1 | # Deployment |
- 改为
1 | # Deployment |
部署到 git
hexo d
更新仓库
hexo g
hexo d
评论
申请 OAuth
1 | Application name |
使用皮肤
把皮肤克隆到 themes 文件夹下面
git clone git@github.com:yscoder/hexo-theme-indigo.git themes/indigo
安装皮肤需要的依赖包
npm install hexo-renderer-less hexo-generator-feed hexo-helper-qrcode hexo-generator-json-content lodash install --save
开启标签页
hexo new page tags
修改 hexo/source/tags/index.md 的元数据
1 | layout: tags |
开启分类页
hexo new page categories
修改 hexo/source/categories/index.md 的元数据
1 | layout: categories |
处理高版本移除全局变量 lodash 出现的 bug
themes\indigo\scripts\plugins.js
1 | const _ = require('lodash') |
启用皮肤
_config.yml
theme: landscape
改为 theme: indigo
常见 问题
标题规范
正确的示例(三级标题前面必须是二级标题,五级标题前面必须是四级标题)
# 一级标题
## 二级标题
### 三级标题
### 三级标题
#### 四级标题
##### 五级标题
错误示例
toc 渲染的时候会多出二级标题的 ol,就会导致样式错位
# 一级标题
### 三级标题
toc 渲染的时候会多出三级标题的 ol,就会导致样式错位
## 二级标题
#### 四级标题
修改本地样式不生效?
因为主题默认引用 cdn 样式,只有主题更新时,cdn 中的样式才会变化。 如果想使用自己修改的样式,需要把修改配置中的 cdn: false
。这样就不在引用 cdn 资源,使用本地资源了。
打开 themes\indigo*config.yml
查找 cdn: true
*替换_ cdn: false
使用 ‘# 中文标题’ 可能会报错
打开 \themes\indigo\source\js\main.js
查找
toc.querySelector('a[href="#' + titles[0].id + '"]')
替换 (toc.querySelector('a[href="#' + titles[0].id + '"]')||toc.querySelector('a[href="#' + encodeURIComponent(titles[0].id) + '"]'))
查找
toc.querySelector('a[href="#' + titles[i].id + '"]')
替换 (toc.querySelector('a[href="#' + titles[i].id + '"]')||toc.querySelector('a[href="#' + encodeURIComponent(titles[i].id) + '"]'))
themes\indigo\layout_partial\post\copyright.ejs 报错
查找
_.template(theme.postMessage)(locals)
替换 theme.postMessage.replace(/#href#/g,page.permalink.replace(/index\.html$/, ''))
\themes\indigo_config.yml 配置
postMessage: 原始链接:<a href="#href#" target="_blank" rel="external">#href#</a>
如何设置文章摘要
在 Markdown 中加 <!-- more -->
文章如何添加多个标签
1 | tags: [a, b, c] |
1 | tags: |
修改 brand 图片(菜单上方背景图)
替换 themes\indigo\source\img\brand.jpg
,保持原文件名不变。
如何在文章中使用图标
先到 fontawesome 找到你需要的图标名,比如:book,按以下格式使用:
1 | <i class="icon icon-book"></i> |
图标样式前缀均为 icon,此外还有 5 个图标大小调节类和 1 个间距类。
1 | <!-- 1.3倍大小 --> |
个别图标无法显示
如果你的浏览器安装了 ADBlock,它会屏蔽 SNS 相关的内容,比如:Github。
解决办法:可配置 ADBlock 不在你的站点运行。
生成站点后没有样式
1 | npm install hexo-renderer-less --save |
更改样式后网站没有生效
确认非缓存问题后,执行 hexo clean
再进行生成上传。
更改站点配色
编辑 themes\indigo\source\css\_partial\variable.less
,更改对应的颜色变量。
注意:使用自定义配色时需把主题配置中的 cdn 关闭,cdn: false。
添加 404 页面
在 hexo/source
目录内新建 404.html
。
设置元数据信息,如果不想套用主题布局可设置 layout
为 false
。
1 | layout: false |
在博客中使用 Emoji
在文章中输入 搜狗等输入法
或其他输入法
自带的 Emoji
会自动显示出来
站点地图/方便收录
查看是否被收录
site:cxvh.github.io
进入:百度搜索提交入口
验证个人网站 提交 url 地址
增加站点地图
npm install hexo-generator-sitemap hexo-generator-baidu-sitemap --save
目录下找到 sitemap.xml 以及 baidusitemap.xml 这两个文件已经生成了。
hexo g
hexo d
配置
站点配置
编辑站点配置文件,hexo/_config.yml
。
启用主题
1 | theme: indigo |
基本配置
为了得到更好的使用体验,以下内容请务必填写完整,因为这些内容会在主题中得到展示。更多
1 | title: your title |
feed 配置
1 | feed: |
jsonContent 配置
为了节约资源,可以对 jsonContent 插件生成的数据字段进行配置,减少数据文件大小。参考 hexo-generator-json-content
主题配置
编辑主题配置文件,themes/indigo/_config.yml
。
左侧菜单
默认配置如下
1 | menu: |
添加新菜单项时,在 menu 下增加子属性即可。属性说明如下:
1 | menu: |
fontawesome 图标已集成到主题中,你可以到 这个页面 挑选合适的图标。
favicon
站点 logo,显示在浏览器当前标签页左上角。
1 | favicon: /favicon.ico |
头像
位于左侧菜单上方
1 | avatar: /img/logo.jpg |
1 | email: 630749264@qq.com |
color
设置 Android L Chrome
浏览器状态栏颜色,不需要可去除此项或设为 false
。
1 | color: '#3F51B5' |
页面标题 (card theme)
自定义归档、标签、分类页的大标题。
1 | tags_title: Tags |
文章摘要
可以在 Markdown
文件中加 <!--more-->
以分割摘要与文章正文。未设置时,按 excerpt_length
设置截取。
1 | # 文章摘要渲染方式: 为 true 时将渲染为 html,否则为文本 |
mathjax
开启后,使你的站点支持公式渲染,by mathjax。 请按需开启,因为此项需要加载额外的 js 文件。
1 | mathjax: false |
分享
文章分享开关,by jiathis-api。
1 | share: true |
文章打赏
默认开启
1 | reward: |
在 crad theme 中,可以通过在 markdown 头部添加 reward: false 来控制某些不想开启打赏的页面。
关闭
1 | reward: false |
二维码请自行从微信、支付宝中下载。当两个二维码同时存在时,为保持显示效果的一致性,注意截图时的边框留白保持一致。必要时可借助 PS 等图片处理工具进行图片大小裁剪、压缩等。
站内搜索
是否开启搜索
1 | search: true |
布局
开启后,文章页在大屏下会隐藏左侧菜单,专注阅读。
1 | hideMenu: true |
Toc
开启文章内容导航。
1 | #toc: false #关闭 |
copyright (card theme)
文章页版权声明内容,hexo 中所有变量及辅助函数等均可调用。
copyright: 这里写留言或版权声明:#href#
less
设置 less 编译时的入口文件路径,hexo-renderer-less。
1 | less: |
评论
集成了 disqus、友言、gitment 和 valine,开启其一即可。
数据统计
集成的有谷歌、腾讯、百度和 CNZZ,请填写你的站点标识。
1 | google_analytics: key |
谷歌站点验证 (card theme)
1 | google_site_verification: false |
规范网址 (card theme)
让搜索引擎重定向你的不同域名、不同子域、同域不同目录的站点到你期望的路径。使用规范网址
1 | canonical: https://cxvh.github.io |
版权起始年份
1 | since_year: 2006 |
自定义页面关于
用户页面中作者相关的描述性文字,如不需要设为 false
1 | about: 用户页面中作者相关的描述性文字,如不需要设为 false |
cdn
开启后将使用 unpkg cdn
最新的主题样式,如果想让你的自定义样式生效,把此项设为 false
。
1 | cdn: true |
ICP 备案号
ICP_license: 陕 ICP 备 1123456 号-1
自定义页面
创建自定义页面
1 | hexo new page custom |
执行命令后会在你的 Hexo
根目录 source/
目录下生成一个与你刚才输入的 custom
一样的文件夹,里面只有一个 index.md
。
1 | --- |
页面配置
1 | layout: page # 必须 |