何时将主题/插件切换到 `.gjs`?

我认为我们需要一种通用的方法来做到这一点,这种方法不依赖于特定的主题组件——就像我们现在一样。

我还有另一个使用这种技术的主题组件:

所以至少有我这边的两个,可能还有更多。

3 个赞

我同意。我构建了一个块组件集合,每个组件都是独立的,而不是捆绑在一个包中:https://gitlab.com/manuelkostka/discourse/blocks。

现在,我可以使用我的 Homepage Blocks 组件将这些块放在一个专用的主页上,就像我可以使用 Right Sidebar Blocks 或 Bars 一样。

我最近在 Central 主题上做了一个尝试,我需要一个自定义侧边栏布局。我可以轻松地为自定义侧边栏构建一个块框架,并将块组件放在上面:https://central.kostka.studio(只需通过名称引用,就可以将 Powered-by-discourse 组件放在侧边栏上)。

独立的块组件确实是我目前用于以灵活且可维护的方式构建客户端自定义的最有用的工具。很高兴能有一个通用的前进方向来支持这一点。

3 个赞

我想顶一下这个帖子,因为我正在尝试找出处理组件的最佳方法。目前我看到两个选项,它们都有很大的缺点:我可以为每个渲染块的主题组件创建一个注册表,但这在某种程度上违背了模块化的初衷。或者通过插件全局添加一个注册表,但这样我的组件就会依赖于该插件的安装。

因此,在核心中拥有一个全局块注册 API 似乎会非常有帮助。主题组件可以使用它来调用块渲染,也可以注册新块。

我喜欢使用块方法,因为它允许我在应用程序布局和组件内容之间分离关注点。块组件只负责渲染其内容,然后由应用程序中的另一个组件进行渲染。我可以从块组件中删除所有路由和出口逻辑,并且可以轻松地在布局中甚至在整个应用程序中多次重用同一个块。

我认为这使得一切都更精简、更具可重用性,并且总体上是一种优雅的方法。在 Discourse 中获得对这种模式的有力支持将是很好的。

4 个赞