ghost 博客开发之路和笔戈科技

2014-08-14 00:36:02 +08:00
 shanelau
5月份的时候,我开始接手一个科技博客 [三闻鱼] ,这个博客是php开发部门基于wordpress开发的,维护一直是他们在做,鉴于wordpress强大的功能,php团队重新做了一套主题,然后博客上线了。文章的更新量也比较小,网站基本每日保持着1000左右的访问量。

## 博客选择
我到团队后,开始接手这个项目,尴尬的是,我并不会php,只懂一些皮毛,没做过具体的项目,本人原本做java出道,后来阴差阳错开始全职做nodejs开发。经过几番考虑决定放弃wordpress,用nodejs开发博客,原因大概有以下几点。

* wordpress已经发展很多年了,代码陈旧,臃肿
* php不熟悉
* nodejs开发博客,对于科技博客来说,更加有逼格

在网络上几经查看后,发现Ghost正符合我的要求,

* 基于nodejs开源的博客系统
* tryGhost组织专门开发和维护
* 完整的官网,较多的文档,非常高的活跃度

## 开始开发
说干就干,clone代码,部署环境,几经周折,项目正式运行了。 当初是0.42版本,
基本功能测试完以后,发现这个博客还有很多地方不能满足我的需求。主要有以下几点:

* 单用户,该系统就只支持一个人登录,所有的文章属名都是一个人,还需要展示作者的头像,个人主页
* 每篇文章不能插入一个图片,作为文章的标题图
* 不能选择文章类型,所有文章都是一个类型,导致不能分栏目或者做专题
* 图片压缩,裁剪

必须要解决的是多用户的功能,作为一个科技博客,不能只有一个作者吧,伤心地去ghost的github页面看他们的roadmap,还好我的英语阅读能力还行,说起也是过了4级的人啊,最新的目标中就有mulit user,可我们不能等啊。只能我来处理了,团队的人员都相信程序员是万能的,好吧,我承认没有搞不定的程序,只有搞不定的妹纸。

用了一种很搓的方式实现了多用户,将作者的所有信息使用html标签写入文章中,插入数据的时候分析文章内容,读取出作者信息和文章的标识图片。
修改数据库加入文章类型和文章的位置。最终大费周章,把博客改到我们需要的样子了。基本上把ghost的源码看完了,对前端模板也是完全熟悉了。

### 目前的博客地址 [笔戈科技](http://www.bigertech.com)
主要由文章和视频两个类别,前端使用了不同的页面输出
主页的文章可以控制位置,选择哪个位置放什么文章。

下图是Ghost 博客运行10天的内存占用情况
![shanelau](http://kissliux.github.io/img/Snip20140812_2.png)

内存占用有点搞,理论上应该在1G左右趋于稳定的,为什么这几个线程的内存占用区别这么大呢,
后来对内存占用也做了一番测试,具体的测试情况见另外一篇博客 地址: 还没写 !-_-


## Ghost0.5
这周一(2014.8.11) 一大早刚刚睡醒就收到了ghost发来的邮件,新版本发布了,那叫一个激动啊,期待已久的多用户,和emberjs,脑海中闪过一个个经常的镜头,新的任务,新的体验。
还好有经验,新版本没几天就基本上搞定了,摸清楚了代码,加入了一些新的功能。
还在一步步完善中啦, 具体看我们团队的代码仓库吧
[笔戈博客Ghost代码](https://github.com/bigertech/Ghost/tree/stable)

开发的目标

* 文章类别选择
* 每篇文章加入 文章图片
* 默认文章url为标题的拼音链接, 修改为数字
* 文章在界面中的位置指定
* 点赞功能
* 多说评论
* 百度统计

## [我的github](https://github.com/kissliux)


原文地址: http://kissliux.github.io/2014/08/13/ghost-and-bigertech/
7722 次点击
所在节点    Node.js
48 条回复
hjc4869
2014-08-14 01:03:08 +08:00
以我个人的使用经验来看

* 单用户,该系统就只支持一个人登录,所有的文章属名都是一个人,还需要展示作者的头像,个人主页
很久之前github上master branch就支持多用户了,开发版更新比较快。用户可以自行建立static page作为个人主页。

* 每篇文章不能插入一个图片,作为文章的标题图
主题中插入{{content words="0"}}即可显示标题图

* 不能选择文章类型,所有文章都是一个类型,导致不能分栏目或者做专题
用tag勉强应付一下

* 图片压缩,裁剪
本地解决。
hjc4869
2014-08-14 01:08:09 +08:00
另外,非常不喜欢多说,我认为disqus非常好用。虽说如此,加入多说也可以只改主题不改核心。

点赞功能可以有。

总之开发目标的2,4,6,7都是可以在主题里改。


BTW,v2ex不支持markdown写作……
huafang
2014-08-14 01:11:16 +08:00
wordpress 代码一点都不陈旧,8年来觉得一直在进步,nodejs 现在和早期wordpress一样,优势是在移动端
GhostFlying
2014-08-14 01:14:11 +08:00
折腾过好几次Ghost,最后还是懒得迁移数据
kmvan
2014-08-14 01:17:49 +08:00
不觉得楼主的网站有比wp出众的地方
GhostFlying
2014-08-14 01:23:03 +08:00
不过话说这样跟着改一个目前更新频率很高的项目会不会很坑。。
hjc4869
2014-08-14 01:42:25 +08:00
@huafang wordpress确实前途不太光明,除非大量的重构。
可以参考贴吧里的那篇文章,分析为何wordpress没前途的。
bombless
2014-08-14 02:05:26 +08:00
wp的确不是很漂亮,不过用的时候要写的代码比较少。我相信一个更优雅的方案就意味着你不得不写更多的代码、更陡峭的学习曲线或者更少的功能。反正是要自己权衡了。
lemonda
2014-08-14 02:29:06 +08:00
导航按钮只有在最顶部才有效,其它位置就变一个白块移动过来了。
amoblin
2014-08-14 07:16:16 +08:00
赞一个。 笔戈科技主页右上角搜索点击没有搜索框?
kmvan
2014-08-14 07:43:46 +08:00
@hjc4869 术业有专攻,如果用wp来弄像微博戓jd的大型网站,那当然是不光明的选择。
66450146
2014-08-14 08:13:13 +08:00
为什么是新开分支,而不是把代码贡献到 Ghost 主干里面呢?
xiashali
2014-08-14 08:30:51 +08:00
不是魅族的一个人做的开着
xuwenmang
2014-08-14 08:55:53 +08:00
@hjc4869

重构什么?用其他语言?用面向对象?然后不得不面对一堆设计模式?一个博客,走入这些不归路会走火入魔的。

wordpress每年的周边市场从主题,插件,定制,到托管。。。这个市场有几千万美金吧,为什么要重构?第二名需要作出改变,第一名不需要!

简单才是这个世界的方向,你心里的那种程序员的小众情节跟商业运营无关!
a15819620038
2014-08-14 09:04:48 +08:00
@kmvan 出众和用「ghost」或「wp」没关系吧~
googlefans
2014-08-14 09:21:22 +08:00
每天有1000的访问量? 你赚了。。
shanelau
2014-08-14 09:26:16 +08:00
@hjc4869 看得出你也是对ghost 有深入研究的人。博客之前使用markdown写的, 然后就贴到v2ex里面来的,发现不支持, 哎 懒得改了,凑合看吧。
* 之前的代码基于stable版本开发的,做了比较多的改动,如果切换到开发包的分支,问题会比较多,所以一直在等他们的stable版本。
* {{content words="0"}} 这个还真没试过,如果可行,那真是太棒了。
* 我们的文章和视频需要使用不同的展示界面,比如视频: http://www.bigertech.com/10028/ 所以只能在文章插入的时候,改文章设置类型,前端展示的时候 使用不同的模板咯。 确实使用tag对文章分类和做专题 也是很不错的。
* 国内的网站都是用多说、友言什么的,他的主题也可以搞定定制,功能也全面,人家也是专心做产品的,感觉还不错吧。 其实我个人也更喜欢 disqus 。
* 多说自己集成了点赞的功能。 我还在考虑要不要自己做一个
* 整个开发对前端的改动还是最大。
shanelau
2014-08-14 09:31:33 +08:00
@huafang 优势在移动端? 这个是web前端的东西了吧。 当然目前很多很多的网站都是用wordpress搭建的,肯定是经受住市场考验了的,承认wordpress的强大和优秀,不过它确实有点老了。ghost作为新晋者,他还需要很多的成长,nodejs的血统注定了他的不一般。
shanelau
2014-08-14 09:32:15 +08:00
@kmvan 还是一个小网站,功能什么的非常不齐全,不过有超越wordpress的信心
shanelau
2014-08-14 09:36:44 +08:00
@GhostFlying 迁移数据也没那么复杂的。 多用户出来后,就可以以我们的代码作为主分支了,ghost的更新和改动合并到我们的代码上面来,没有一劳永逸的事情, 不过挑战还蛮大的,如果使用wordpress 改改前端就差不多了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127775

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX