CRYZ

Discourse开发初步认识

以开发者的角度介绍Discourse这一款论坛软件。

什么是Discourse?

Discourse是一款开源的论坛软件,采用前后端分离的架构,使用Docker部署。

可能与很多读者所熟悉的React和Vue等流行的前端框架不同,Discourse所使用的是一款名为Ember.js的MVC架构前端框架。至于为什么选择Ember.js,且看Discourse联合创始人的回答

同时Disocurse使用的后端框架Ruby on Rails,很多人可能也不太熟悉,但是在十多年前(2010年左右)可以说是每个开发者没用过也听说过了。Discourse开发于十年前(2013年),所以选用Ruby on Rails没有任何奇怪的。

数据库方面使用的是Postgresql,缓存则使用Redis。这两个在如今已经是很多项目的标配了,故不多做介绍。

Discourse基于以上的技术,实现了三种扩展其功能的方式,分别为主题(Theme)、主题组件(Theme Component)和插件(Plugin)。本文以及后续可能的一系列文章所介绍的「Discourse开发」也是基于使用以上所述三种方式的开发,而非修改Discourse的核心源代码。

技术选型
编程语言Ruby、JavaScript
后端框架Ruby on Rails
数据库Postgresql
缓存Redis
前端框架Ember.js
Discourse技术栈

什么是主题和主题组件?

Discourse的主题和主题组件都用于扩展或修改其前端功能,如修改前端样式等。

主题与主题组件有何不同?

想象一下🤔,你一次只能穿一套衣服,但是无论穿那一套,都可以配戴任意数量的饰品。

而一个主题就像是一套衣服,一次只能用一个。主题组件就如饰品,无论你使用那一套主题(衣服),都可以搭配任意的主题组件。

扩展阅读:Beginner’s guide to developing Discourse Themes

什么是插件?

Discourse的插件可以用于扩展或修改其后端功能,如添加后端路由等。同时插件也可以使用主题和主题组件的所有功能。

扩展阅读:Developing Discourse Plugins – Part 1 – Create a basic plugin

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注