ghost 博客开发之路和笔戈科技 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ares001
50.47D
0.88D
V2EX    Node.js

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

  •  1
     
  •   ares001
    PRO
    2014-08-14 00:36:02 +08:00 8214 次点击
    这是一个创建于 4112 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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/
    48 条回复    2014-10-19 15:59:31 +08:00
    hjc4869
        1
    hjc4869  
       2014-08-14 01:03:08 +08:00
    以我个人的使用经验来看

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

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

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

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

    点赞功能可以有。

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


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

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

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

    简单才是这个世界的方向,你心里的那种程序员的小众情节跟商业运营无关!
    a15819620038
        15
    a15819620038  
       2014-08-14 09:04:48 +08:00
    @kman 出众和用「ghost」或「wp」没关系吧~
    googlefans
        16
    googlefans  
       2014-08-14 09:21:22 +08:00
    每天有1000的访问量? 你赚了。。
    ares001
        17
    ares001  
    OP
    PRO
       2014-08-14 09:26:16 +08:00
    @hjc4869 看得出你也是对ghost 有深入研究的人。博客之前使用markdown写的, 然后就贴到v2ex里面来的,发现不支持, 哎 懒得改了,凑合看吧。
    * 之前的代码基于stable版本开发的,做了比较多的改动,如果切换到开发包的分支,问题会比较多,所以一直在等他们的stable版本。
    * {{content words="0"}} 这个还真没试过,如果可行,那真是太棒了。
    * 我们的文章和视频需要使用不同的展示界面,比如视频: http://www.bigertech.com/10028/ 所以只能在文章插入的时候,改文章设置类型,前端展示的时候 使用不同的模板咯。 确实使用tag对文章分类和做专题 也是很不错的。
    * 国内的网站都是用多说、友言什么的,他的主题也可以搞定定制,功能也全面,人家也是专心做产品的,感觉还不错吧。 其实我个人也更喜欢 disqus 。
    * 多说自己集成了点赞的功能。 我还在考虑要不要自己做一个
    * 整个开发对前端的改动还是最大。
    ares001
        18
    ares001  
    OP
    PRO
       2014-08-14 09:31:33 +08:00
    @huafang 优势在移动端? 这个是web前端的东西了吧。 当然目前很多很多的网站都是用wordpress搭建的,肯定是经受住市场考验了的,承认wordpress的强大和优秀,不过它确实有点老了。ghost作为新晋者,他还需要很多的成长,nodejs的血统注定了他的不一般。
    ares001
        19
    ares001  
    OP
    PRO
       2014-08-14 09:32:15 +08:00
    @kmvan 还是一个小网站,功能什么的非常不齐全,不过有超越wordpress的信心
    ares001
        20
    ares001  
    OP
    PRO
       2014-08-14 09:36:44 +08:00
    @GhostFlying 迁移数据也没那么复杂的。 多用户出来后,就可以以我们的代码作为主分支了,ghost的更新和改动合并到我们的代码上面来,没有一劳永逸的事情, 不过挑战还蛮大的,如果使用wordpress 改改前端就差不多了
    ares001
        21
    ares001  
    OP
    PRO
       2014-08-14 09:37:32 +08:00
    @lemonda 没有吧,浏览器都测试过的 除非IE6
    ares001
        22
    ares001  
    OP
    PRO
       2014-08-14 09:37:54 +08:00
    @amoblin 搜索功能还没做呢。 设计师说先放一个按钮
    ares001
        23
    ares001  
    OP
    PRO
       2014-08-14 09:39:14 +08:00
    @xiashali 哈哈 就是我啊。 还缺人 有兴趣一起折腾?
    ares001
        24
    ares001  
    OP
    PRO
       2014-08-14 09:41:10 +08:00
    @googlefans 赚什么? 博客的内容都是团队成员原创的。最高的时候PV 有7W, 世界杯期间大概5k 左右,现在1-2k
    ares001
        25
    ares001  
    OP
    PRO
       2014-08-14 09:42:11 +08:00
    @bombless 你说的很对。使用ghost 费了我们不少精力
    haiyang416
        26
    haiyang416  
       2014-08-14 09:44:30 +08:00
    说实话,现在的版本体验远不如之前使用 wordpress 那时候。
    之前那个版本很养眼,还跟人推荐过说这主题做得挺好。
    现在这个各种大图,且不说后台程序如何,这前端设计真真的审美疲劳。
    xiaojay
        27
    xiaojay  
       2014-08-14 09:49:11 +08:00
    楼主blog能加个rss么 :)
    googlefans
        28
    googlefans  
       2014-08-14 09:51:17 +08:00
    @shanelau 哦,网站推广力度是不是不够啊?
    66beta
        29
    66beta  
       2014-08-14 09:59:01 +08:00
    wordpress确实比之前卡了许多,但是从开发角度出发,wp的接口太TMD的全面了!!!
    ares001
        30
    ares001  
    OP
    PRO
       2014-08-14 09:59:46 +08:00
    ares001
        31
    ares001  
    OP
    PRO
       2014-08-14 10:01:02 +08:00
    @haiyang416 大图占满 视觉冲击,设计师要的效果 程序员只能说呵呵
    ares001
        32
    ares001  
    OP
    PRO
       2014-08-14 10:01:31 +08:00
    @haiyang416 你是老用户了啊 点赞
    xiaojay
        33
    xiaojay  
       2014-08-14 10:05:49 +08:00
    yangkeao
        34
    yangkeao  
       2014-08-14 10:13:15 +08:00
    自己在撸博客框架。

    当然没有ghost如此强劲,但是正好可以满足自己的需求。//当然,不要跟我提SEO。
    hjc4869
        35
    hjc4869  
       2014-08-14 10:13:44 +08:00 via iPhone
    @xuwenmang 装在性能一般的VPS上,WordPress对于大访问量甚至不得不加缓存插件才能防止内存被爆,我想能够救它的就只有HHVM了。感觉对于独立博客来说这个程序不太适合。相同条件下用nodejs写的ghost博客就可以承受更大的访问量。
    ares001
        36
    ares001  
    OP
    PRO
       2014-08-14 10:30:27 +08:00
    @xiaojay soga。 这个是基于hexo搭建的。 rss 应该有的,估计是我没配置好。 你有博客没,加个友情链接吧
    ares001
        37
    ares001  
    OP
    PRO
       2014-08-14 10:30:47 +08:00
    @yangkeao 有点犀利
    Mihuwa
        38
    Mihuwa  
       2014-08-14 11:22:44 +08:00
    首屏大图接受不了。整体排版很不错。
    xieren58
        39
    xieren58  
       2014-08-14 12:30:10 +08:00
    魅族?
    ares001
        40
    ares001  
    OP
    PRO
       2014-08-14 13:09:10 +08:00
    @Mihuwa 我也接受不了。 哈哈 ,设计师觉得轮播图太low了,就用了大图冲击的设计, 又得保证图片不变形,只能占满首屏, 体验确实不是很好,不过在手机里面访问就ok了
    ares001
        41
    ares001  
    OP
    PRO
       2014-08-14 13:09:40 +08:00
    @xieren58 惭愧惭愧。
    akn8
        42
    akn8  
       2014-08-14 15:39:07 +08:00
    原来是兴爷
    ares001
        43
    ares001  
    OP
    PRO
       2014-08-14 23:49:31 +08:00
    @akn8 这都被你认出来。。。 哈哈 速度去follow 我的github。 你是小敏?
    ares001
        44
    ares001  
    OP
    PRO
       2014-08-14 23:50:26 +08:00
    已经把ghost 汉化了 嘎嘎
    akn8
        45
    akn8  
       2014-08-15 00:16:11 +08:00
    @shanelau nope,今天你才加了我微信的。
    ares001
        46
    ares001  
    OP
    PRO
       2014-08-15 13:36:58 +08:00
    @akn8 我一天加好多人。。。。 去微信抖一下我
    coffeego
        47
    coffeego  
       2014-10-16 11:43:49 +08:00
    其实我认为楼主换nodejs开发只有一个理由就是不熟悉wp和php,其它的都是伪理由,哈哈
    ares001
        48
    ares001  
    OP
    PRO
       2014-10-19 15:59:31 +08:00
    @coffeego 眼力不错哦
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2346 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:48 PVG 23:48 LAX 07:48 JFK 10:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86