Glimmer 组件更改检测未生效 - @tracked 数组中属性突变

您可以使用 loadScript() 来加载 JS,即使提供的 URL 是外部 URL。使用 jsdelivr 等外部服务应该也可以。

import loadScript from "discourse/lib/load-script";

...

loadScript(URL).then(() => {
   // your code
})

虽然我没有广泛测试过,但动态导入也应该可以工作。

async function load() {
  const {
    default: myDefault,
    foo,
    bar,
  } = await import(URL);
  // rest of code
}

我应该指出,将 NPM 文件直接保存在您的代码中可能比依赖外部 CDN 更安全,具体取决于 JS 的关键程度。同样,您可能需要在浏览器中使用它之前进行一些打包和预处理。


至于 Immer 是否能与 discourse 一起使用,我不知道。