Discourse、NodeBB和Flarum论坛系统分析

近日对论坛设计感兴趣,在国内互联网被各种大型商业公司瓜分,移动互联网的环境下用户又很难积极贡献内容。一般意义的上的小型论坛社区不断被看衰。 不过相比嘈杂的大型社区,小型社区还是能帮助很多核心用户在小范围内进行交流。某种意义上来说,仅仅是作为工具,小型论坛社区依然有它的价值。 周末,我找到了这几款使用不同语言开发的论坛进行研究。这些新型论坛社区吸取了最近互联网的诸多特性,又衍生了各自很多独有的功能特性,对研究现代互联网产品很有借鉴意义。

Discourse

Ruby系的论坛代表作品。gihub上有16663颗star,自称是为互联网下一个十年设计。官方仅支持docker方式安装。对服务器要求比较高(推荐使用双核CPU,1G内存,安装了docker的64bit的系统)。 首页默认是按最新排序的所有的话题列表。可以通过分类(类似于版块)检索话题。发表话题需要选择一个分类(或者是无分类)。 进入话题后,可以关注这个话题,有评论就会给你提醒。也可以收藏。讨论系统是以线性直铺的方式陈列。可以直接评论,也可以引用别人评论的一部分做引用评论。不能查看对该评论的评论,只能看到该评论的父评论。这里设计偷懒了。因为在数据库上评论的表记录一个父评论的id的设计是最简单的表现评论和评论之间关系的方式。评论列表是下拉载入的,旁边有评论导航,可以方便查看评论总数,或者跳到第几个评论上。 比较有特色的地方是,可以引用评论来开新的话题。 整体UI设计上还是挺粗糙的。 Feature:Ruby on Rails, Ember.js, PostgreSQL, Redis Home: http://www.discourse.org/ Demo: http://try.discourse.org/ Github: https://github.com/discourse/discourse

NodeBB

Nodejs系的论坛代表作品。我看过vue.js的官方论坛使用的就是这个程序。目前github上有5166颗star。 该程序的开发设计上放弃了传统数据库,选用了redis或者mongodb此类nosql数据库。使用了web sockets来实现了即使交互和实时消息提醒。确实是体现了nodejs高效率的特点。 NodeBB在首页设计上保留传统论坛中版块陈列的方式。选择一个版块进去,就是话题列表了。如果该分类版块有子分类的话,子分类会首先陈列在最上面。但是在导航栏上提供了查看最近所有话题的入口,也有查看最热话题的入口。 发表一个话题时,需要选一个分类版块,不过可以随意的添加标签。这是一个亮点。 进入一个话题后,依然是可以收藏,或者选择关注话题讨论,有新评论就会给你提醒。 评论系统依然是线性直铺,分为直接回复和引用回复。每个评论都附带有up和down的vote功能。只是查看回复依然只能通过子评论来查看父评论。评论列表通过下拉更新,顶部有评论导航条,可以用来查看评论条数,跳转到某一条评论上。 该程序在用户关系增加了很多功能,有关注别人,跟别人私聊的功能,还有群组,群聊的功能。确实是体现了实时交互的特性。 Feature: Express on Node.js, Bootstrap 3, Redis or MongoDB, nginx Home: https://nodebb.org/ Demo: https://community.nodebb.org/ Github: https://github.com/NodeBB/NodeBB

Flarum

Flarum可能是我当下最喜欢的论坛程序了。虽然用的是我并不太喜欢的php来开发的。 Flarum的两位作者分别是esoTalk和FluxBB这两款论坛的作者,Flarum可以说是作者继承了这两款论坛软件后的集大成者。作者声称目前该软件还在beta阶段,不适用于生产环境,但是你还是可以使用Composer来安装。建议使用Vagrant来开发测试,官方有提供Vagrantfile。 Flarum后端使用PHP,前端使用了Mithril.js这一js MVC框架来渲染页面。Mithril.js比一般框架都要小,渲染速度更快。所以在页面载入渲染的时候效率要比其他论坛更快一些。 Flarum使用tag来组织话题。tag分为primary tag和一般tag。primary tag相当于分类或者版块的概念。一个primary tag可以包含多个一般tag作为子分类。Primary tag在论坛侧边栏作为主要版块置顶显示。在创建话题的时候,需要选择一个primary tag,可以包含多个一般tag。这个设计是我非常喜欢的。 从侧边栏的功能入口来看,该论坛程序确实也非常简单。『All discussions』是查看所有的话题,这也是默认首页。『following』可以查看你关注的话题。『Tags』则可以查看所有的Primary tags的陈列,类似于论坛版块的陈列,当然也有其他的一般tag。 评论系统的设计是我见过最赞的。依然是按时间的线性陈列,不能引用回复。不过可以查看到该评论的父评论跳转过去,可以查看到该评论的有哪些子评论,并且跳转过去。尤其是侧边栏提供了一个评论时间条,可以通过拖拽的方式,拖拽到某一时间点上查看评论。这确实是我见过最优雅的评论设计了。 同时在话题页面的左上角提供了一个快速查看同个primary tag的话题列表功能,可以在这里快速跳到其他相关话题去。 Feature: PHP, MySQL, Mithril.js Home: http://flarum.org/ Demo: https://discuss.flarum.org/ Github: https://github.com/flarum/flarum