通过将前端分离到主题组件中来更快地开发插件

我曾之前问过关于如何设置本地环境以在开发插件时更快地编码,并且我知道其他人也问过

我一直在使用一种新的工作流程,效果很好,我想分享一下,以防对其他人有所帮助。它并非解决了所有问题,但让事情变得更加愉快。以下是详细信息:

首先,我之前遇到的问题:

要开发插件,我必须从本地的 Discourse 实例进行编码,这非常慢,因为:1)对文件的任何更改都需要重新加载页面,而我的计算机在运行 Discourse 时加载速度非常慢(每次页面重新加载大约需要 30 秒),2)我用来测试的本地 Discourse 开发站点非常慢(导航等速度慢),3)对后端插件代码的任何更改都需要停止服务器并重新启动——这可能需要几分钟。在此期间,我的计算机风扇会狂转。

因此,我可能需要一小时的编码时间才能完成通常在 10 分钟内就能完成的事情,而工作流程却很顺畅。


我的解决方案

与开发插件相比,由于Discourse 主题 CLI(我使用它的步骤在此),编码主题组件的工作流程非常棒。它快速而流畅。

为什么编码主题或主题组件更快更容易

使用主题 CLI 工具,您可以在本地编码主题,但“监视它”(即运行主题)在一个实时站点上(可以是您的实际站点,您的实际站点但仅处于预览模式,或您设置的测试实时站点)。

所以您实际上不需要在您的机器上运行 Discourse 本身——因此我的机器不会像插件那样变慢。每当您进行更改时,只需刷新您链接到的实时站点,更改就会在那里显示。

所以,我意识到:大多数时候当我编写插件时,实际上是在处理前端内容(hbs 文件、javascript 文件等)。而花费在后端内容(设置路由、创建自定义字段等)上的时间很少。

因此,与其将所有内容一起编码,不如将所有前端编码移到一个主题组件中,以利用主题组件的工作流程。

当需要更新后端内容时,我必须再次在插件中进行编码——但这只占我插件开发时间的约 20%(至少在我看来)。这使我现在可以将 80% 的时间用于更友好的主题组件工作流程。

当需要将所有内容迁移到生产环境时,我可以:

  • 将主题组件和插件分开,然后在相关的 Discourse 站点上同时使用它们,或者
  • 如果将所有代码放在一个地方很重要,那么届时将主题组件代码移到插件中。诚然,这可能有点繁琐,但您只需要在准备好更新生产环境时才这样做,同时享受更快的主题组件工作流程。

就是这样。

这并非革命性的。但它让我在某个曾经让我头疼的问题上有了很大的改进。

7 个赞

是的,这是一个很好的方法。

我已经将该方法用于主题列表预览一段时间了,将尽可能多的功能移入 TC 并使其独立。需要 API 修改的附加功能然后会放入一个插件,并鼓励用户也安装该插件以利用它们(如果他们可以)。

这种方法的唯一问题是,如果您共享代码并且 API 修改是必需的,那么您必须确保有人同时安装这两个组件。将它们分成两部分可能不是人们使用您作品的最方便的方式,因此我仍然认为,最终单个插件安装仍然是此类开源作品的最佳方法。

如果只是为了您自己的网站,那么,这很棒!

3 个赞

是的,当然有些情况最终会想要一个单一的代码库。我顿悟的时刻是,即使我最终想要一个单一的代码库,我也可以在主题组件中编写所有前端内容,然后在它工作之后,将其移至插件。有点繁琐,但总的来说对我来说要好得多,因为我仍然花费大部分时间在主题组件的工作流程中进行编码。

2 个赞