以开发者的角度介绍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的主题和主题组件都用于扩展或修改其前端功能,如修改前端样式等。
主题与主题组件有何不同?
想象一下🤔,你一次只能穿一套衣服,但是无论穿那一套,都可以配戴任意数量的饰品。
而一个主题就像是一套衣服,一次只能用一个。主题组件就如饰品,无论你使用那一套主题(衣服),都可以搭配任意的主题组件。
扩展阅读:Beginner’s guide to developing Discourse Themes
什么是插件?
Discourse的插件可以用于扩展或修改其后端功能,如添加后端路由等。同时插件也可以使用主题和主题组件的所有功能。
扩展阅读:Developing Discourse Plugins – Part 1 – Create a basic plugin
发表回复