Hello,My personal Blog!个人博客搭建总结

Posted by BUAADreamer on 2021-01-29
Words 1.8k and Reading Time 7 Minutes
Viewed Times

经过了好几天的摸索,终于大概部署好了个人博客,之后会把所学的一些CS知识技术整理成笔记记录在这里,欢迎大家时不时来踩一踩!

这篇博客主要是关于个人博客搭建和更新方法的笔记,怕之后忘了所以赶紧记一下。目前博客仅仅是实现了基本功能,之后可能会视情况设置一下评论区,点赞,社交等功能。

个人博客搭建总结·

Jekyll·

这段时间为了搭建一下自己的博客尝试了两种方式,一种是基于Jekyll的,这种方式比较简单,但是有时过于简单了,之前试过用一个cayman的主题,但由于本人太菜,这个模板需要配置太多,只好放弃了,改用hexo搭建。如果想用Jekyll的可以参考这个网站:http://jekyllcn.com/ ,此站目标是成为 Jekyll 的全面指南,内容详细,值得看一看。

hexo搭建大致流程·

大致参考了以下几篇博客

https://blog.csdn.net/jinxiaonian11/article/details/82900119(这个作者有两篇这方面的博客,讲的挺详细的)

https://blog.csdn.net/qq_37210523/article/details/80909983

  1. 选好一个空文件夹,最好不要有中文路径,之后用bash cd到这个路径下,继续下面的操作。

  2. 安装配置好node.js(node.js下载地址:https://nodejs.org/en/download/),hexo (npm install hexo -g)。

    npm安装hexo时可能会出问题,更换一下镜像就好了。(如:npm config set registry http://registry.npm.taobao.org

  3. 安装必要的组件:npm install,之后输入处理命令 hexo g 并开启服务器hexo s 出现了能够打开本地网页的提示(这个打开和那个线上的是一样的效果)就说明已经成功了,之后ctrl+C退出继续下面步骤

  4. 在github上新增仓库,命名为: username.github.io,并在本地的根目录下的 _config.yml 文件中的Deployment设置处,添加以下代码,repobranch根据自己情况修改

1
2
3
4
deploy:
type: git
repo: git@github.com:BUAADreamer/BUAADreamer.github.io.git
branch: main
  1. 之后选好主题,并利用作者提供的方式git clone到本地theme文件夹下即可,并在根目录下的)_config.yml改一下theme设置,很多人推荐next,我的这个用的是ocean,也看到有同学用的黄玄大神的https://huangxuan.me/

    然后创建博客:hexo new blog-name,之后一行代码部署到github上即可:hexo d -g,再打开自己的网站:username.github.io即可看到了!

  2. 后续配置,这个每个主题都有区别,去github上看作者的文档就行。可以添加很多功能。下面记录一下常用的几个tips和资源

    • 修改文章:直接修改之后用hexo d- g就可以完成push的操作。

    • 设置摘要:使用<!--more-->标签设置摘要。这样在index页只会展示这行代码之前的文字

    • hexo官方中文文档:https://hexo.io/zh-cn/docs/

问题和个人用法总结·

  1. 图片用的腾讯云对象存储
  2. md文件配置时一定是类似tags: 123这样的格式。tags123之间一定要有空格!!!

评论功能·

我的博客使用的Utterances,配置非常简单,并且也比较安全简洁。

可以参考这篇文章:https://roife.github.io/2021/02/12/use-utterances-for-comment/

其他的还有Gitalk,Valine,也可以用,但是Gitalk配置麻烦且很容易挂,后者貌似需要花钱。

更换代理·

同时参考下面这两篇文章,因为都有些不全面。记得要实名认证+获取证书+域名解析

https://blog.csdn.net/obsession753/article/details/84110360

https://blog.csdn.net/i042416/article/details/89926005

2021.4.24·

更换了主题,换成了感觉更美观的huxblog主题

更换过程很简单,只需要到https://github.com/Kaijun/hexo-theme-huxblog 这个网站下载代码,之后将themes里的huxblog文件夹copy到你自己的themes目录下,然后在根目录下的_config.xml修改themes名字为huxblog即可。

2021.4.25·

调换过程很简单,但是由于hexo版的黄玄主题作者已经不维护了,出现了各式各样的问题,于是决定换成长得差不多的snail主题,这个主题作者给了详细的说明文档。https://github.com/dusign/hexo-theme-snail

2021.6.3 图片配置·

以下内容搬运自:https://blog.csdn.net/qq_36408085/article/details/104117319

修改 hexo 目录下的 .config.yml 文件,将 post_asset_folder: false 修改为 post_asset_folder: true。

安装一个图片路径转换的插件。在hexo文件夹下打开 Git bush。

1
npm install https://github.com/7ym0n/hexo-asset-image --save  #注意,不是官方的那个!!!

这样就可以让本地和远程显示一样了!就正常使用绝对或相对路径插入图片代码即可

1
![](文章名/1.png)

注意: 这是经过修改的插件代码,网上流传的另一份代码 npm install https://github.com/CodeFalling/hexo-asset-image --save 并不能使用。

如果你之前安装了这个错误的插件,请将 /node_modules/hexo-asset-image/index.js 这个文件替换成下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
'use strict';
var cheerio = require('cheerio');

// http://stackoverflow.com/questions/14480345/how-to-get-the-nth-occurrence-in-a-string
function getPosition(str, m, i) {
return str.split(m, i).join(m).length;
}

var version = String(hexo.version).split('.');
hexo.extend.filter.register('after_post_render', function(data){
var config = hexo.config;
if(config.post_asset_folder){
var link = data.permalink;
if(version.length > 0 && Number(version[0]) == 3)
var beginPos = getPosition(link, '/', 1) + 1;
else
var beginPos = getPosition(link, '/', 3) + 1;
// In hexo 3.1.1, the permalink of "about" page is like ".../about/index.html".
var endPos = link.lastIndexOf('/') + 1;
link = link.substring(beginPos, endPos);

var toprocess = ['excerpt', 'more', 'content'];
for(var i = 0; i < toprocess.length; i++){
var key = toprocess[i];

var $ = cheerio.load(data[key], {
ignoreWhitespace: false,
xmlMode: false,
lowerCaseTags: false,
decodeEntities: false
});

$('img').each(function(){
if ($(this).attr('src')){
// For windows style path, we replace '\' to '/'.
var src = $(this).attr('src').replace('\\', '/');
if(!/http[s]*.*|\/\/.*/.test(src) &&
!/^\s*\//.test(src)) {
// For "about" page, the first part of "src" can't be removed.
// In addition, to support multi-level local directory.
var linkArray = link.split('/').filter(function(elem){
return elem != '';
});
var srcArray = src.split('/').filter(function(elem){
return elem != '' && elem != '.';
});
if(srcArray.length > 1)
srcArray.shift();
src = srcArray.join('/');
$(this).attr('src', config.root + link + src);
console.info&&console.info("update link as:-->"+config.root + link + src);
}
}else{
console.info&&console.info("no src attr, skipped...");
console.info&&console.info($(this));
}
});
data[key] = $.html();
}
}
});

2022.4.24 增加一些渲染 包括todo清单·

使用这个仓库:https://github.com/hexojs/hexo-renderer-marked

发现图片居然和todo不能同时渲染

换用:https://blog.bugimg.com/works/hexo-renderer-markdown-it_and_plugins_config.html

2024.1.14 修复目录跳转问题·

原因:toc插件与hexo自带的toc函数有冲突,不能同时使用。

解决方法:如果使用已经支持目录的主题,卸载掉toc插件即可。执行以下命令

1
2
npm remove hexo-toc --save
hexo cl #清除缓存

2024.1.15 修复公式渲染问题(Nunjucks Error expected variable end)·

官网说明是如下问题:即对有两个大括号包起来的内容会产生渲染问题,需要特殊处理。latex可以直接改成其他表达形式

2020070122580072