2024 年 Clojure 调查问卷! 中分享您的想法。

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

0
ClojureScript

只有当存在多个斜杠时,字符串 require 才真正有必要。我们可以将这种风格作为符号来支持,如果是只有 1 个斜杠的依赖,因为它是一个有效的符号。

5 个答案

0

评论由:thheller 提出

我再来说说...使用字符串 require 给人什么坏印象?对于正常的 CLJS 代码,合格符号是不合法的,并且使用字符串已经解决了所有潜在的问题。添加一种情况,即当有符号时可以使用符号,但没有斜杠时则不行,这只会让新用户感到困惑,而不会带来任何额外的好处。

0

评论由:deraen 提出

我明白只允许使用字符串斜杠的意义。

然而,如果我们这样做,那么检查我们在尝试这样做时给出的警告可能会有所帮助

`
(ns example.core
(:require [react-dom/server :as sdf]))

找不到命名空间:react-dom/server,无法找到 react_dom_SLASH_server.cljs、react_dom_SLASH_server.cljc 或提供 "server" 的 JavaScript 源文件。
`

请注意,它说 "server" 而不是 react-dom/server。这是因为一切都是允许斜杠的,但外部库代码只使用名字部分而不是命名空间。 (这个补丁不会改变警告信息。)

0

评论由:thheller 提出

对于 JS 的 require 仍然存在其他歧义,这就是我为什么仍然主张在所有情况下都只使用字符串的原因。

技术上我们也可以使 {{(:require [@scoped/thing :as thing])}} 也能工作,但不应这样做。

此外,我非常确信我看到几个 JS 包在它们的名称中使用“-”或“_”。对于 CLJS,我们总是转换为下划线,如果我们不对 JS 也这样做,这可能会增加更多混淆。

是的,这个警告应该被修复,但如果使用字符串就不会是问题。

0

评论者:mfikes

已在补丁库存中添加 CLJS-2346.patch (i)

0
参考:[https://clojure.atlassian.net/browse/CLJS-2346](https://clojure.atlassian.net/browse/CLJS-2346)(由anmonteiro报告)
...