2023年11月 - 重构Discovery路线:这会如何影响我的主题/插件?

作为我们将 Discourse 升级到最新 Ember 版本项目的一部分,我们一直在对 Discovery(又名“主题列表”)路由进行重大重构。

此主题面向主题/插件开发者,旨在列出可能受重构影响的主题/插件活动类型。

背景

进行此重构是必要的,因为现代 Ember 不再支持我们在此类路由中广泛使用的“命名出口”,例如 {{outlet \"topics\"}}。基本上,以前渲染到命名出口的所有控制器/模板都已转换为组件。

在此过程中,我们还借此机会对相关代码进行了现代化和整合(例如,所有类型的 Discovery 路由现在共享相同的控制器和模板)。

核心部分的更改尚未最终确定,但可以在此分支上找到正在进行的工作。我们没有具体的合并日期,但预计将在未来几周内完成。如果您有任何疑问或疑虑,请告知我们!

哪些主题/插件活动会受到影响?

此重构主要影响“控制器”层。路由基本保持不变,从 <TopicList /> 组件开始的所有内容也未受影响。

我们预计唯一的影响将是那些深入核心代码(例如,通过 modifyClass 和模板覆盖)的主题/插件。定义的 API 和出口未受影响。

模板覆盖

:shushing_face: 这些模板已被重构为组件。任何现有的覆盖将静默停止工作

  • navigation/categories
  • navigation/category
  • navigation/default
  • navigation/filter
  • discovery/topics

:boom: 这些模板已被大量重构。任何现有的模板覆盖都可能导致站点出现灾难性错误。

  • discovery
  • tag/show
  • user-topics-list
  • user/messages
  • discovery/categories
  • components/basic-topic-list
  • components/d-navigation

技术上,可以覆盖新引入的模板。但是,不建议覆盖模板,并且正在淘汰

因此,应删除所有模板覆盖,并替换为更强大的扩展 API(例如插件出口)。如果您正在做的事情似乎无法通过 Discourse 现有的扩展点实现,请告知我们!

modifyClasslookup() 调用

:wastebasket: 这些类已不存在。modifyClass 将静默停止工作。查找将返回 null(因此可能导致错误)。在最常见的情况下,我们引入了向后兼容的垫片(参见脚注)

  • controller:discovery
  • controller:discovery/topics[^dis-top-shim]
  • controller:discovery-sortable (-> controller:discovery/list)
  • controller:discovery-filter (-> controller:discovery/filter)
  • controller:navigation/categories
  • controller:navigation/category [^nav-cat-shim]
  • controller:navigation/default
  • controller:tag/show [^tag-show-shim]
  • controller:discovery.* (-> controller:discovery/list)

[^dis-top-shim]:对“model”属性的只读访问已通过弃用通知进行了垫片处理
[^nav-cat-shim]:对“category”属性的只读访问已通过弃用通知进行了垫片处理
[^tag-show-shim]:对“tag”属性的只读访问已通过弃用通知进行了垫片处理

:technologist: 这些类已进行了大量重构。modifyClasslookup 调用可能需要重构:

  • route/discovery
  • route/discovery.*
  • route/tag-show

路由

:motorway: 路由名称(即 router.currentRouteName)保持不变

:clipboard: Discovery 路由 model() 钩子(即 router.currentRoute.attributes)基本保持不变

插件出口

:electric_plug: 所有插件出口及其参数均保持不变。

HTML / CSS

:art: HTML 结构和类基本不受影响

16 个赞

本周我们将把这项变更的测试范围扩大到我们的托管服务,目标是在下周初(11 月 6 日)合并到 main/tests-passed

6 个赞

此更改现已上线 main/tests-passed

3 个赞