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

欢迎!请访问 关于 页面以获取更多关于该功能的信息。

0
ClojureScript

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

5 答案

0

评论由:thheller

在 {{shadow-cljs}} 中,每个 {{:module}} 有 4 个属性供此使用。

  • {{:prepend}} 被视为文本,例如许可头。可以包含 JS 但不会通过优化。
  • {{:prepend-js}} 被视为也将通过闭包优化的 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 提出)
...