我想顶一下这个帖子,因为我正在尝试找出处理组件的最佳方法。目前我看到两个选项,它们都有很大的缺点:我可以为每个渲染块的主题组件创建一个注册表,但这在某种程度上违背了模块化的初衷。或者通过插件全局添加一个注册表,但这样我的组件就会依赖于该插件的安装。
因此,在核心中拥有一个全局块注册 API 似乎会非常有帮助。主题组件可以使用它来调用块渲染,也可以注册新块。
我喜欢使用块方法,因为它允许我在应用程序布局和组件内容之间分离关注点。块组件只负责渲染其内容,然后由应用程序中的另一个组件进行渲染。我可以从块组件中删除所有路由和出口逻辑,并且可以轻松地在布局中甚至在整个应用程序中多次重用同一个块。
我认为这使得一切都更精简、更具可重用性,并且总体上是一种优雅的方法。在 Discourse 中获得对这种模式的有力支持将是很好的。