前言
年三十才配完的博客初一就访问异常了,懂也不懂前端的我查了一波,发现好像是因为服务器访问国内的cdn出了点问题,然后archer主题就刷不出来网页了(还有这种操作)。
转念一想这服务器成天被拿来做一些富强民主文明和谐的事,搞不好哪天就被墙了,还是把博客部署在github上来得靠谱一点(真香)。顺便换一个更稳定的Hexo主题,NexT。
Github + Hexo博客配置
第零步 在自己电脑上重新装一遍nodejs和Hexo等
(国内下载这些果然没有国外服务器快啊。。)
用hexo init blog
重建一下Hexo站点
第一步 <username>.github.io
建立
因为之前也搭过博客,这步就不记录了。总之在github上建立一个叫<username>.github.io
的仓库就行,username
需要和自己的github用户名完全一致,访问https://<username>.github.io
的时候github就会访问这个仓库。
第二步 更改Hexo部署配置
将blog/_config.yml
中的#deploy
项改为1
2
3
4deploy:
type: git
repo: git@github.com:<usernanme>/<username>.github.io.git
branch: master
大功告成(比自己配Nginx服务快多了,这才是真光速嘛)
测试
发布并部署Hexo1
$ hexo clean && hexo g -d
然后就可以在<username>.github.io
上看到博客啦
不过因为github.io的更新会有一定的延迟,可以先通过打开hexo server
观察修改后的变化(hexo clean && hexo g
就行),最后再push到github上去
NexT主题
NexT主题作为一款更新维护了好几年的热门主题,现在已经正式移交给了theme-NexT组织来维护,比较靠谱,文档也更加全面。虽然我好喜欢archer的头图和它整体的莫名萌风格,但作为一个想长期写写博客又没太大精力研究前端的人(放开我我要炼丹)来说NexT显然是更好的选择,而且NexT也支持自定义风格,有精力了还是可以搞一搞的。
所有的搭建步骤均按照NexT官方文档完成,这文档是真友好啊。
记录下对主题作出的改变方便日后修锅
主题选择
NexT自带四种主题,选了Gemini
看起来内容更加全一些
主题设置
参照NexT主题设置
照着自己舒服改了几项,修改项列表:
- 打开Github Banner(Octocat还是萌啊,网页右上方有惊喜)
- 文章摘要,选择
excerpt_description
- 打开
Post Wordcount
- 打开
Post Codeblock Copy
样式更改
把文章底部的#
标签换成标签图标
修改next/layout/_macro/post.swig
,将rel="tag"
后的#
换成<i class="fa fa-tag"></i>
打开post_copyright
将next/_config.yml
中的1
2
3
4creative_commons:
license: by-nc-sa
sidebar: false
post: false
改成1
2
3
4creative_commons:
license: by-nc-sa
sidebar: true
post: true
第三方服务设置
因为github服务器在北美的原因,优先选择海外服务商
webmaster(推广/搜索引擎收录)
- Google Webmaster Tools
- Bing Webmaster Tools
Yandex Webmaster Tools(俄罗斯网站,我寻思着我也不会俄语就懒得弄了)- Baidu Webmaster Tools
百度是最骚的个人信息要一大堆验证还巨慢(小声bb
补充:因为百度爬虫被Github墙了,sitemap的方法不适用,将NexT/_config.yml
中的baidu_push
项打开实现自动推送,安装hexo-baidu-url-submit
插件实现主动推送
网站分析工具
阅读统计
其余插件
LaTex支持
渲染引擎选择
NexT支持两种渲染引擎:mathjax
和katex
katex
有着更快的速度(本机测试10x)渲染速度比较,katex所用的渲染器功能也更为全面
然鹅,katex
所支持的LaTex公式不全(日常用其实没多大差别),关键是katex
语法貌似还与标准LaTex有点区别,作为一个LaTex菜鸡望而却步,而且katex
渲染在我机子上有一点点问题,暂时还是选用mathjax
(mathjax
还支持公式引用,这个赞一波)
渲染引擎安装
首先卸载原先的markdown renderer,并安装kramed(pandoc在mac上存在 issue)
1 | $ npm un hexo-renderer-marked --save |
开启math功能
在next/_config.yml
中,打开math
选项并选择mathjax
1
2
3
4math:
enable: true
...
engine: mathjax
解决重复渲染问题
打开math
并重新部署后,发现网页虽然能渲染公式,但会重复渲染,参照 Make Hexo Support Math Again 将 <your-project-dir>/node_modules/hexo-renderer-kramed/lib/renderer.js
中的1
2
3
4function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}
改成1
2
3function formatText(text) {
return text;
}
解决无法渲染行内公式问题
参考 Hexo的Next主题中渲染MathJax数学公式 解决行内语义冲突,将<your-project-dir>/node_modules/kramed/rules/inline.js
中的1
escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
改成1
escape: /^\\([`*\[\]()#$+\-.!_>])/,
1 | em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
改成1
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
测试
这是一个行内公式 $R_{m \times n} = U_{m \times m} S_{m \times n} V_{n \times n}’$ 测试
The famous matter-energy equation $\eqref{eq1}$ proposed by Einstein…
使用\tag{}
标记公式
Equation $\eqref{eq_tag}$ use \tag{}
instead of automatic numbering.