使用主题而非插件进行自定义的优缺点

我注意到,在设计自定义方面,推荐使用主题(Themes)而不是插件(Plugins)。这样做有哪些好处?

从开发角度来看,我认为主题过于繁琐。我需要额外一个工具才能实时查看代码更改——主题 CLI 控制台

我也了解到主题可以由用户选择(但我不需要这个功能)。

在生产环境中,主题相比插件有哪些优势?

1 个赞

我的看法:

  1. 在运行时而非构建时进行安装决策,实现零停机时间。
  2. 更容易禁用和移除。
  3. 可供无法访问控制台的托管客户端使用。

但我同意,从开发者的角度来看,插件通常更容易导航,仅供参考。

4 个赞

通过将 主题 JavaScript 拆分为多个文件,您可以利用主题通过 Ember 实现插件所能完成的所有功能。

因此,如果您不需要创建路由、修改序列化器或存储自定义数据,很可能仅通过一个主题就能实现您的目标。

从支持角度来看,我们观察到自定义插件面临的最大挑战是网站停机。这通常是因为插件修补了 Rails 核心中已更改的类或方法,而插件尚未更新以适配这些变更。如果 Ember 端发生某些变更导致主题或主题组件失效,网站可能无法正确渲染,但您可以使用 /safe-mode 快速禁用它。

我理解您的观点。此外,该 gem 使您能够在本地开发主题,并将其同步到您拥有 API 密钥的任何 Discourse 站点,包括 theme-creator.discourse.org。即使您没有设置本地开发环境,只要运行该 gem 即可实现此功能。

10 个赞

哇,这里的回复太精彩了,我几乎没什么可补充的。

我认为唯一需要补充的重要一点是,在 Discourse 内部,我们正在努力将一些插件拆分为“后端插件”和“前端主题”。当内容如此混合时,我们正在考虑这种“分发”挑战。

总的来说,我强烈建议仅在绝对必要时才创建插件。当你需要修改 Ruby 后端时,你别无选择。而仅对前端进行修改的插件则强烈不建议使用。这类插件更难保持更新,且在用途方面也远不够灵活。

12 个赞