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投票
...