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

欢迎!请访问关于页面以获取更多关于如何使用的详细信息。

0 投票
ClojureScript

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

5 个回答

0 投票

评论由:thheller 提出

我再说一遍……为什么使用字符串依赖项这么糟糕?资格符号在普通 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 投票
做出回答 jira
参考资料:https://clojure.atlassian.net/browse/CLJS-2346(由anmonteiro报告)
...