在所有插件和主题(组件)中全局添加外部 JS 库

情况

我们希望在 Discourse 实例中引入外部 logging JS 库,以通过使用这个轻量级日志包装器来改进调试工作流。例如,我们可以通过 log.setLevel('debug') 设置日志级别。

该外部库应在我们应用上安装的所有自定义插件、主题和主题组件中均可用。

实现方案

• 通过 register_asset 在多个插件中导入 JS 文件,是否会导致该文件被多次加载?
• 在 Ember 弃用其日志工具 并转向使用 console.log 之后,是否有其他具有类似功能的 JS 库可供选择?

我们目前采取以下方案来实现:

  1. 安装一个插件,该插件负责导入外部 JS,并将 JS 库挂载到全局 window 对象上(window.log = log)。
    • 确保 JS 库仅被导入一次。
    • 其他插件、主题或主题组件将依赖该插件。但这会导致开源插件强制要求用户同时安装两个插件。

您认为这个方案合理吗?或者您是否有其他建议?

这对我来说感觉耦合度很低……为什么不创建一个独立的插件或组件来引入这个功能,然后确保始终安装它呢?

2 个赞

是的,这实际上就是我们目前正在使用的解决方案。有一个插件负责导入 JavaScript,其他插件在使用它时都会依赖该插件已安装。

感谢您的回复!

2 个赞