我想开始为 Discourse 开发,应该从哪里开始?

很多年前,我曾为一款使用 PHP 和 MySQL 的旧版论坛平台开发过插件。当时我对自己能实现的一些功能感到非常满意,会员们也很喜欢。

在此之前,我从未接触过 Ruby on Rails(除了在最初艰难地运行导入脚本,将数据迁移到 Discourse 的过程中有过一点接触 :joy:)。

我猜,在深入阅读这里的文档和开发指南之前,我需要先掌握一些基础知识。

我应该先学习 Ruby on Rails 吗?

我还需要学习 Ember.js 吗?坦白说,我也从未接触过它,但我了解到它在 Discourse 核心中有所应用。

此外,我对 Postgres 也是新手。

非常感谢您的任何建议和后续步骤的指导。

8 个赞

太好了!

关于这一点,有一些很有用的帖子。我会分享我写的那篇,因为它引用了这些内容:How can I make my own Discourse plugins? - #2 by merefield

(不过我个人现在更推荐使用 VSCode)

一个入门方法是先通过提交 PR 来帮助支持现有的插件(我就是这么开始的),从解决小问题开始,然后逐步处理更大的问题,甚至添加新功能。

如果你有一个相对简单的插件或主题组件(Theme Component)的想法,那就从那里开始吧。个人的创作目标往往能带来很强的动力。

一开始不要贪多,先从简单的入手,因为最不想看到的就是失去动力:这些东西可能很难,尤其是当你想要进行根本性修改的时候。

请保持耐心。EmberJS 是一个特别棘手、需要花时间去理解的框架。

我的建议是:先从主题组件(Theme Components)开始,稍后再涉足插件开发。

充分利用现有的插件和主题组件库作为参考。也许有人之前已经解决过类似的问题?他们是怎么做的?去看看代码吧。始终遵循 Discourse 核心设定的标准。Discourse 的源代码也是极其宝贵的资源。

也许最好的建议就是:直接动手去做!学习的唯一途径就是真正“弄脏双手”。不要害怕犯错,也永远不要让挫败感阻止你。坚持下去,事情最终会成功的。尽量自己解决问题,但在实在需要的时候,也可以随时向他人求助。

12 个赞

我花了很长时间学习 Rails。但很多功能都发生在 Ember/JavaScript 这一侧。我的建议是,从主题组件中可以完成的内容入手。它们更安全、更易用,而且能做的事情多得多。

7 个赞

学习 Ember.js 的最佳方式是什么?你们有什么推荐的在线课程吗?

我倾向于通过结构化的课程来学习,而不是自己随意摸索,因为这样可以迫使我掌握基础知识。

阅读 Ember.js Guides - Guides and Tutorials - Ember Guides

同时参考 https://guides.rubyonrails.org/

3 个赞

最近刚开始接触这方面,我同意 Jay @pfaffman 的观点。

最好的起点是 theme components

一些理由(其他人可能会给出更好的理由,以下是我凭记忆列出的):

  • theme components 易于开发,且无需复杂的 Web 开发环境即可快速看到更改效果。

  • theme components 功能强大,可以实现很多功能,包括轻松添加 javascript 库。

  • theme components 便于添加自定义 JavaScript 代码和选择器,因此你可以轻松使用检查器工具来创建选择器并插入元素(比如你喜欢的 div)。

在熟悉并享受使用 theme components 之后,你就可以开始深入插件开发了。

这是一种合乎逻辑的方式/进阶路径,有助于提升你的 Discourse 开发技能并掌握入门技巧。

5 个赞

抱歉,我觉得我漏掉了这个,它已经被大幅扩展了,这里有大量资料可供你深入钻研:Developing Discourse Themes & Theme Components

3 个赞

除了本主题中已提到的优秀建议外,我最推荐的额外建议是:浏览 Discourse · GitHub 上的众多主题和组件代码,努力理解其运作原理。克隆它们、拆解它们,弄清楚它们是如何工作的。我主要就是通过这种方式,并结合一些零散的小项目来学习的。

3 个赞

一个好的起点是查看 https://github.com/literatecomputing/feverbee-engagement-theme,然后删除其中所有多余的内容进行清理。之后提交一个 PR。:slight_smile:

3 个赞

我明白你在做什么,@pfaffman:grin: 不过,我觉得你暂时还不希望我清理你的代码,但我同意提交 PR 可以作为一个很好的起点。首先,我需要深入研究一下本线程中已经分享的一些资源。

我目前最大的挑战是从我的 LAMP 背景转向 Discourse 技术栈(通常被称为 LNPR:Linux、Nginx、Postgres、Ruby/Rails)?哈哈。

3 个赞

不能怪一个人尝试。:wink:

但说真的,那个主题展示了很多功能,能让你对主题能做什么有一些概念。能够创建全新的话题列表简直太棒了。把它清理一下(里面有很多根本不该存在的代码,但当我尝试删除时却弄坏了东西,最终只好放弃,因为根本找不到我在哪里搞错了右括号或者……总之是某个地方),哪怕只是为自己做,也是个相当不错的练习。为了让你有更多背景信息,判断我的建议是否对你有用,我得说明一下:我拥有计算机科学学位,但大约在1998年就停止学习HTML了。我在理论上理解CSS能做什么,但对JavaScript依然完全一头雾水,也不清楚JavaScript和Ember的界限在哪里。我经常尝试做一些自以为微不足道的修改,结果却把整个系统搞垮了。

祝你好运!

2 个赞

我也是来自同样的 LAMP(即 WordPress)背景。这些东西确实有难度,但只要投入足够的时间,是可以理解的。

2 个赞