不错。
听起来你可能需要考虑使用小部件(widget)方案。
另外,还可以考虑这个 API 方法:
api.reopenWidget("poster-name", {
html() {
<<your-code-here-but-consider-using-the-original-as-template>>
}
}
我建议你参考:A tour of how the Widget (Virtual DOM) code in Discourse works
在 Discourse 中实现这类功能需要付出更多的精力,因为它是一个自动化的 Web 应用;但一旦正确实现,解决方案将非常稳健。