文章目录
  1. 1. 综合比较
  2. 2. 迁移中遇到不少坑。
  3. 3. 兼容性
    1. 3.1. 分类
    2. 3.2. 评论
  4. 4. 心得
    1. 4.1. 使用个部服务器
    2. 4.2. 插件
    3. 4.3. 主题
    4. 4.4. 标签/分类的 别名
    5. 4.5. 迁移问题
    6. 4.6. 发布

无意中看到了 Hexo,浏览了一下大致的功能,试用了一下后,即刻做出决定:把博客从WordPress 迁移到 Hexo!

花费一两天时间完成整站迁移,但还是有些小问题,记录一下迁移的过程。

综合比较

迁移完全是个人喜好,个人懒得比较这两个博客系统的优劣,其实也不具有比较性,特性完全不一样。

但对于纯写作型博客,Hexo 已经够使用了,WordPress 功能强大,但功能百年不用也就荒废了价值。迁不迁移取决于功能使用。

  • WordPress - 优点

    1. 功能强大:标准的 Blog。很容易通过插件扩展为 CMS、商城、企业门户 等。
    2. 资源丰富:即有官方的皮肤、插件库,又可以去其它地方下载
    3. 安装方便:上传,Mysql 连接即可,基本所有主机商都内置 WordPress 支持一键安装,小白都会。
    4. 操作简单:标准的发表文章体验,只要你用过任何平台,如QQ空间,论坛或其它之类的,都能很快熟悉 WordPress 的操作
    5. 插件强大:插件库几十万的插件虽然只是说说,但精品插件总会有1000款以上吧。普通博客用了十多款就够了。
    6. 移动支持:Android ,IOS 版本,虽然不会去手机上写做,但管理还是挺方便的。
  • Hexo -优点

    1. 静态发布:编译成静态 HTML,打开速度肯定比 php 快。 另外可以使用一些免费的如 Github Page 服务来托管,主机不用花钱,做个域名映射就行。
    2. Markdown本地写作:虽然 WordPress 也支持 MarkDown 语法,但肯定没有用自己的离线编辑器用起来爽吧。

其实对于我这样的码农来说,仅这两条优点就有100%的理由让我迁移了。

后补一点,迁移后发现 Hexo 的性能一般,对于100多篇文章的 Blog, generate 一下需要20秒种左右,令我感觉有点小不爽。

迁移中遇到不少坑。

使用 hexo-migrator-wordpress 插件“一键搞定”。具体方法见官方教程

1
2
3
4
5
#使用npm安装插件
npm install hexo-migrator-wordpress --save
#(先去Wordprdss导出你的XML文件先),在博客目录执行
hexo migrate wordpress wordpress.xml
#导完之后,插件和xml都可以卸掉了~_~

这个命令一键把 xml 转换成了 _post 文件夹中的 md 文件,使用 hexo generate 将 md 再生成出 HTML 就 OK 了。

当然没有这么轻松的事了,做为一个程序员,迁移肯定会有不兼容,都已经习惯了。Hexo生成的 md 文件并不理想,而且只能导出文章分类

丢失的数据有:标签(应该是 Hexo 的 Bug,XML 里面是有的,并没有生成)、评论上传的图片等文件

由于 Hexo 是一个静态的 Blog 生成工具,评论的数据,肯定是找不回了。但是如果之前的 WordPress 使用了多说之类的评论系统,那么可能还有点救,所幸本站之前有效评论不多(WordPress垃圾评论怎么这么多?),丢了就丢了。

这里只能给出个人建议:手动处理,每篇文章检查一遍。比如在 WordPress 里面,使用了 HighLight 插件高亮了代码,都换成 ```languae 的形式。

其它的问题也很多,丢失的标签,分类等数据,也要在检查的时候依次补回。

兼容性

分类

在 WordPress, 一篇文章是可以有多个分类( Catagroy )的,但在Hexo里面情况有些不一样。

Hexo 只能有一个 Catagroy,如果有定义了两个,会认为第二个是第一个的子分类,比如在WordPress里面给一篇文章定义了两个分类:“分类一”、“分类二”,导在hexo里面可能有两种情况

1
2
3
4
5
6
categories: [分类一,分类二]
//说明:这种情况会认为分类二是分类一的子分类,文章属于分类二
categories: [分类二,分类一]
//说明:这种情况会认为分类一是分类二的子分类,文章属于分类一

hexo这样规类的话,如果原先在WordPress里面很多使用几个分类的情况,那就大大不妙了(你的分类Tab会很乱)~~,解决的办法是重新整理。

评论

Hexo生成出来的页面都是纯静态,所以需要外站的插件去支持评论功能。国内的基本都是用多说:http://duoshuo.com/。WordPress如果原先使用插件那就很好办了,如果使用评论系统就悲剧了,评论没法保留。

###功能性插件
这部份通过后台代码实现的基本都不支持,比如微信服务号,在线商店插件等。

心得

使用个部服务器

做为码农,机器上可能都已经安装了 Ngnix 或者 Apache 之类的服务器,比如个人机器上本身就安装了 Apache,而且设置了开机自动启动。

所以我不想每次都搞个多余的 hexo server 去再启动一个 Http 服务,我写在apache的conf/extra/http-vhosts.conf 里面加个配置就 OK 了。

1
2
3
4
5
6
7
8
9
<Directory "/blog/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "/blog/pulbic"
ServerName mirror.xdnote.com
</VirtualHost>

插件

主题

Github上搜 hexo-theme 可以搜到不少Hexo的主题,点进去看大部分主题也都提供了一个预览的 Demo 地址可以自行挑选。

需要注意的是有不少主题是 Hexo2.5 时代的,目前Hexo的版本是3.0。可能有一些不兼容,目前主题还比较少,不及 WordPress 丰富。而且不可能有一个主题能100%对味, 总是觉得有一些怪怪的,所以如果时间充裕可以自己去改,由于是 Git 版本管理,改起来也相当方便,不像 WordPress 那样复杂。

标签/分类的 别名

在_config.yml里面配置

1
2
3
4
5
6
7
8
category_map:
工具集: tools
技术集: technique
tag_map:
Java: java
JavaScript: js
css: css
html5: html5

迁移问题

本地安装了Hexo后,发现几个问题,而且肯定有些是不能适应理解的,无法接受就暂时不迁。

  • 在 Wordpress 里面的自定义链接与Hexo的规则不兼容,数据丢失

    如果想要保留以前的链接,需要把所有文件我文件名改为你以前自定义的链接名字,然后设置 permalinks 规范为文件名

  • Tag 虽然有导出到 xml 文件里面,但 hexo 没有引入

    不知道是不是导入插件原因,因为导入后很多文章都要重新审阅,也就顺便重新规范下 Tags 吧

  • Category 不兼容

    如果原先有多个 Category 只有忍痛去掉了,也好重新规范下

  • 图片资源文件问题

    我是在 source 目录建立自己的资源目录如 images,把图片放到此目录里面,插入图片时链接写绝对路径如 images/xxx.png

  • 以前在wordpress的高亮插件生成的代码块有问题

    我用的是插件把以前的 <pre class="brush:java"></pre>改为 ```形式

发布

在文章的头上加

Setting Description Default
layout Layout
title Title
date 发布日期
updated 最后更新日期
comments 是否激活评论功能 true
tags 标签列表
categories 分类列表
permalink 自定义链接 如果不填,就根据文件名生成链接
文章目录
  1. 1. 综合比较
  2. 2. 迁移中遇到不少坑。
  3. 3. 兼容性
    1. 3.1. 分类
    2. 3.2. 评论
  4. 4. 心得
    1. 4.1. 使用个部服务器
    2. 4.2. 插件
    3. 4.3. 主题
    4. 4.4. 标签/分类的 别名
    5. 4.5. 迁移问题
    6. 4.6. 发布