2024 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于页面 以获取有关如何工作的更多信息。

0
ClojureScript

通常很有用,但特别适用于将 clj.loader/set-loaded! 调用追加到用户文件中。

5 条答案

0

评论由:thheller 提供

在 {{shadow-cljs}} 中,我为此每个 {{:module}} 有 4 个属性。

  • {{:prepend}} 被视为文本,例如许可头。可以包含 JS,但不会经过优化。
  • {{:prepend-js}} 被视为将经过 Closure 优化处理的 JS 代码
  • {{:append-js}}
  • {{:append}}

我认为拥有所有 4 个并区分 "文本" 和 "JS" 是有价值的。{{shadow.loader}} 的实现完全通过这些属性完成。

0

评论由:dnolen 提供

我开始对此感到犹豫,因为我们不需要它来解决 CLJS-2157,这就是我最初打开这个问题的原因。

0

评论由:thheller 提供

set-loaded! 应仅在模块中调用一次,因此必须将其附加到模块本身而不是模块中的单个文件。

通过向单个文件追加,你最终会多次调用它,适用于具有多个条目的模块。据我所知,该调用不是幂等的,可能会导致事件频繁触发。至少,它可能会在完整模块实际加载之前调用 set-loaded!。由于它立即触发了可能引起不良结果的回调。

配置选项通常不仅对加载器有用。

0
回答者

评论由:dnolen 提供

据我所知,ModuleManager.setLoaded 是幂等的。我在本地测试中没有遇到任何问题。如果您能提供失败的案例,请随意提供,但我自己没有找到。

0
回答者
参考: https://clojure.atlassian.net/browse/CLJS-2156(由 dnolen 报告)
...