记录一下从百度hi迁移博客过程

其实去年12月份就开始迁移了,最早从baidu hi导出的博客文章的时间是20121208,从那时就已经完成了博客导出工作。
中间在github上搭建了一个博客,纯静态页面+js动态加载文章数据,可以看看效果:http://jfojfo.github.com,除了加载时间慢点外(如果没显示内容请再刷新试试),界面在bootstrap的帮助下,还是相当清爽的。

由于github不能搭建动态页面,如果不想把每篇文章都制作一个静态html,只能用静态 + js 动态的方法了。数据服务使用的是Parse,后台管理做得不错,但国外服务器访问速度还是慢了一截。另外使用Parse有个最大的感受,对数据的获取和操作不够灵活,比如首页10篇文章想显示个摘要,还必需把前10篇文章的所有内容拉下来,不能选择性拉取;想查询某类别下的文章,query条件支持有限,不够灵活。还好Parse也支持在服务端写自定义函数,可以返回自己想要的结果,一定程度上弥补了上述缺点。

页面展示用的客户端js动态加载,js使用knockout.js框架,非常好用,knockout.js是用于html页面数据绑定的,开发者在写html时可以只关注UI,从服务器获取到数据后,再用knockout绑定一下。其他一些框架比如Ember.js、backbone等等,也可以实现数据绑定,但knockout应该更简洁一些,没有太复杂的用法,容易上手。很多网页制作网站也是用的knockout进行绑定数据的,比如http://www.strikingly.com/

介绍了这么多github博客,有点喧宾夺主,实在是不忍心做了这么久又扔掉,但是没有一个服务端,限制还是不少,特别是看了《IMTX进入微信时代…》这篇文章后,爱折腾的心又蠢蠢欲动,腾讯微信平台貌似挺好玩,可惜需要一个服务端验证,github + Parse无论如何也无解,只能自己拥有服务端才行。于是又从纯客户端(完全不依赖服务器端)回归到服务端+客户端。不过也学到不少东西:比如knockout这类框架、Backbone的Router使用、扩展TinyMCE支持SyntaxHighligher语法高亮(编辑预览时也高亮显示)、Parse平台如何使用(未来也许是一种趋势哦)、感受一下富客户端页面开发等等。

最后还是投入了wordpress的怀抱,其实wordpress作为一个平台,用于快速开发网站还是相当实用的,wordpress提供的很多上层接口,如the_post、bloginfo、get_category等等,这些接口足够上层,起码不用处理底层的数据库操作,省了建站人员一大部分时间。wordpress的主题和插件也足够丰富,自己扩展也完全可以,至于网上很多人说的性能问题,只要不是流量超级大,中型网站应该不是瓶颈吧。

最后感谢一下crifan的开源工具BlogsToWordpress,搜索了一圈就这个最好用,并且支持百度改版后的博客,导出的WXR文件直接导入wordpress使用,毫无压力。

这个工具的代码可以到Google Code下载(为什么不放到github上),当初修改了一个百度新版blog解析的bug,email提交给crifan,很快就回复了,希望这个工具能越做越好。

贴两个BlogsToWordpress的用法,供参考,详细参数解释请移步这里

python BlogsToWordpress.py –startFromUrl=http://hi.baidu.com/jfojfo/item/64eb48f506a0756b3c1485f7 –firstPostId=525 –processPic=yes –processCmt=yes –googleTrans=no
python BlogsToWordpress.py –srcUrl=http://hi.baidu.com/new/jfojfo –processPic=no –processCmt=yes –googleTrans=no