使用jekyll来写博客的一些心得

本博自创建起也有一段时间了,也陆陆续续写了一些博文(虽然不是很多)。这几天时间比较充足,就对自己的博客做了一番改动。包括,换了一个主题,评论系统的更换等等。在这个过程中,对jekyll的理解又有了一些加深,虽然只是感性上的理解,并没有对这个框架的具体代码进行研究,但也依稀也触摸到了一些设计的思想。个人感觉jekyll这个框架确实做的不错。现在也越来越习惯这种jekyll+github+markdown的写作方式了。本文就把现阶段使用jekyll的心得以及自己对jekyll框架的一些理解做个介绍。

本文不涉及jekyll博客搭建的过程,因为网上已经有很多相关的资料,只会说明一些我在搭建自己的博客中碰到的一些问题。快速搭建教程:点击这里


## 个人理解 jekyll是一个轻量级的博客系统。就我的理解而言,jekyll框架是一个将博客模块化,解析并且组织各页面之间联系的系统。首先,设计上,jekyll框架将博客模块化,比如有负责网页显示样式的部分(即模板),有负责博客内容的部分,也就是我们使用markdown语言来写的内容。其次,它通过一定的规则,又将各个模块的内容组织起来,并创建各个页面之间的联系。这样做的好处显而易见,那就是它可以使我们在写作的时候,尽最大的精力去集中在内容的创作上,而不用太在意格式以及排版。并且借助于git这个目前相当流行的分布式版本控制系统,可以很有效的管理我们的文章,完全可以做到在没有网络的情况下写作,待有网络时再将内容同步。


## 使用技巧 以下的这些技巧,大部分都是本人在使用过程中所总结的。 ### 1.巧妙利用_config.yml配置文件 在本地的创作中,我们一般不急于将文章push到远端,而在写作同时想看一下具体的效果。这时就可以通过在jekyll工程的根路径下执行命令jekyll命令来起一个本地4000端口的web服务来时时查看效果。而这时,默认的jekyll命令下的一些设置并不能满足我们的需求,而每次在命令后加太多参数又非常的麻烦,这时“_config.yml”这个配置文件就派上用场了。jekyll命令会在执行后读取“_config.yml”的内容来执行与所带参数同样的效果。我的“_config.yml”文件的部分配置如下:

pygments: true
safe: true
auto: true 解释:第一行,使用pygments来进行代码高亮。第二行,使自定义插件无效,此命令为github上默认的命令,由于本人的博客是托管在github上,所以使用这个命令。第三行的作用就是当工程中文件有变动后,就重新组织工程内容。不加这三行配置,本来在工程下编译工程并开启本地4000端口服务的命令是:

jekyll --pygments --safe --auto --server 添加了那三行配置后,直接执行命令:

jekyll --server 就可以达到跟上面的命令同样的效果。

注意:由于jekyll生成的是静态页面,所以当修改了文章内容后,需要刷新网页才能看到修改后的结果,至少我用chrome浏览器是这种情况,个人猜测应该是浏览器对静态页面做了缓存处理。就是说,如果你设置了auto的属性并且在修改了文章以后没有看到效果,请首先在浏览器中尝试刷新下当前页面。

2.使用国内的评论系统

对一个博客来说,评论也是一个相当重要的功能。本博刚开始搭建的时候,使用的是Jekyll-Bootstrap这个模板,该模板里默认的评论系统是国外的DISQUS。当然不是说DISQUS不好,只是针对我们这些墙内的用户来说,DISQUS附带的facebook和tiwitter社交功能都是不能直接使用的。我们更希望使用一些国内的SNS平台比如新浪微博,豆瓣,人人之类的。这时,把评论系统换成国内的是个比较好的选择。国内的评论系统有很多,比如友言和多说等等。刚开始时,我选择了友言,但不知为何,在将友言提供的通用代码配置到模板里以后,并不能出现评论框,折腾了许久,这个问题至今没有搞定。所以,我后来使用了多说。结果证明多说是可以使用的,现在看起来,效果还不错。至于更换的方法,只需要在模板中找到评论的地方,修改即可。

3.使用脚本来快速新建文章

说来偶然,在我搜索技术文章的时候,偶然发现了一个博客,觉得这个博客的风格很合我的口味,便顺便找到了作者在github上托管的仓库,将整个仓库clone下来后,将内容换成了自己的文章,便成了我现在这个博客所使用的模板。

这里说一下,使用jekyll时,在工程目录下的”_post”文件夹里放置的就是个人所写的博客内容了。这里可以说是最主要的,因为你的写作成果就集中在这里。如果你看中了别人的博客样式,只需要找到对应的工程,拷过来以后,将”_post”里的文章替换成自己的即可。

在我将这个工程拷过来以后,我发现了以前在Jekyll-Bootstrap中一个非常好用的新建文章的命令无法使用了,该命令如下:

rake post title="titlename" 执行该命令后,将会在“_post”的文件夹下生成形式为“YYYY-MM-dd-titlename.md”的文件,并且会提供好一些附加信息。其中,titlename就是命令中的title后引号中的值。

经过和之前的工程对比后我发现,应该是缺少了一个名为Rakefile的脚本文件的原因,于是我把这个文件拷贝到当前的工程中,这个命令就又可以使用了。之后我对这个文件做了一些修改,使之产生的文件更适合现在的模板。

4.使用pygments代码高亮

jekyll默认的代码样式确实不怎么样,但是jekyll支持语法高亮工具Pygments。Pygments支持100多种语言的高亮显示,安装网上教程有很多。

这里说明一点,就是要使用Pygments,你需要在jekyll中添加相应的css文件,如果你使用本博的这个模板,那么你可以省略接下来这个步骤了。使用命令:

pygmentize -S native -f html > pygments.css 可以在当前路径下生成一个名为pygments.css的文件,使用的是“native”的Pygments样式,这在命令中都有体现,接着就可以将这个css文件放到jekyll工程中,并在模板中加入该样式即可。

Pygments代码高亮语法使用介绍:点击这里

具体例子效果如下:

1
2
3
4
5
public class HelloWorld {
    public static void main(String args[]) {
      System.out.println("Hello World!");
    }
}

注意:要使用pygments语法高亮,需要在_config.yml配置文件中配置,见上面的第一点。


## 总结 虽然jekyll是用ruby写的,而我对ruby根本就不了解。但是还是在具体的使用中摸索到了一些规律。而且我现在的博客所使用的模板的可以说并不复杂,就算不懂ruby,也完全可以自行修改其中的一些信息。下面给出我这个博客的github托管地址,有兴趣的同学可以clone下来自行修改。点击这里



Previous     Next
nswebfrog /
Published under (CC) BY-NC-SA in categories jekyll  tagged with jekyll