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

欢迎!有关这个平台的信息,请参阅关于页面。

0
ClojureScript

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

5 答案

0

评论者:thheller

我再说一遍...使用字符串 requires 有什么不好?对于正常的 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 requires时,存在其他含糊不清的地方,这就是为什么我仍然主张在所有情况下都使用字符串。

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

另外,我很确信我见过几个CSJS包在它们的名字中使用"-"或"_"。对于CLJS,我们始终将其转换为下划线,如果我们不这样做的话,对于JS,可能会增加更多混淆。

是的,应该修复这个警告,但如果使用字符串的话,甚至都不会成为问题。

0

评论者:mfikes

将CLJS-2346.patch添加到补丁请求(i)

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