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

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

0 投票
ClojureScript

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

5 个答案

0 投票

评论者:thheller

再谈谈...字符串 require 有什么不好?规格化符号对正常的 CLJS 代码是不合法的,并且使用字符串已解决所有潜在问题。仅当有一个斜杠时可以使用符号,但有两个斜杠时不可以,这只会让新用户感到困惑,而没有额外的益处。

0 投票

评论者:deraen

我明白只允许使用字符串中斜杠的道理。

然而,如果我们这样做,最好检查我们尝试执行此操作时给出的警告。

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

找不到命名空间:react-dom/server,无法定位到 react_dom_/_server.cljs、react_dom_/_server.cljc 或提供 "server" 的 JavaScript 源代码
`

注意,它说的是 "server" 而不是 react-dom/server。这是因为所有内容都允许使用斜杠,但外部库代码仅使用名称部分而不是命名空间。(此补丁不会更改警告。)

0 投票

评论者:thheller

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

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

此外,我非常确定我看到了几个JS包,它们的名称中使用了“-”或“_”。对于CLJS,我们总是将它们转换为下划线,如果对JS不做此处理,这会产生更多混淆。

是的,警告应该被修复,但是即使只使用了字符串,也不会有问题。

0 投票

评论由:mfikes发表

CLJS-2346.patch已添加到补丁服务(i)

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