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

欢迎!请参阅 关于 页面以获取更多关于如何使用此功能的详细信息。

+8
ClojureScript

作为一名新的 clojuser,我想知道哪一个更好。

  1. fighweel
  2. shadowcljs

我是一个新手,想要坚持使用其中一个。请就每个的优点和缺点向我说明,以便我可以做出明智的决定。祝您有个美好的一天

3 答案

+5

最佳答案
 
最佳答案

Figwheel 和 shadow-cljs 都是非常优秀的项目。

一般来说,使用哪个工具取决于您如何构建应用程序。

如果您纯粹在 ClojureScript 项目中使用(或使用一些 JavaScript 库,作为捆绑包或 cljsjs),请使用 Figwheel。

与 shadow-cljs 相比,Figwheel 的组成部分更少,因此更容易学习和使用。

如果您的应用程序开发基于 npm 包和 node.js 工具,则请使用 shadow-cljs。您还应了解您想与之工作的 npm 包,并可能需要修复这些包中的 JavaScript 错误。

shadow-cljs 极大地简化了与 npm 和 node 世界的工作,但由于涉及更多的组件,因此需要学习的内容也更多。强烈建议阅读 https://shadow-cljs.github.io/docs/UsersGuide.html 并严格遵守其指导。

如果您不确定,我建议从 Figwheel-main 开始。您使用 Figwheel-main 项目编写的所有代码都应在 shadow-cljs 项目中工作。

by
注意,figwheel 支持 npm https://figwheel.org/docs/npm.html - 尽管我自己尚未尝试使用。

Thomas Heller 关于为什么他认为 shadow 仍然是一个更好选择的讨论 https://code.thheller.com/blog/shadow-cljs/2020/05/08/how-about-webpack-now.html - 但我对那些选择 figwheel+npm(例如 dnolen?mfikes?)而非 shadow 的人的看法很感兴趣。
by
:bundle 选项是用于与 figwheel-main 一起使用 npm 包。在原始帖子中没有详细介绍。

我没有必要使用 npm 来创建有趣的 ClojureScript 应用程序。这是我用 figwheel-main 的主要原因(我无法代表其他人)。Figwheel-main 只是工作,速度快,我可以编写 ClojureScript,而且我不必处理 npm 的依赖项,也不必理解 JavaScript 或其生态系统。

如果您不清楚 npm 包的具体作用,那么调试系统会变得更加困难。因此,至少有一些 JavaScript 和 NPM 的经验似乎是使用 shadow-cljs 的一个要求。

Figwheel-main 还与我所使用的编辑器兼容。我看到许多人在 Slack 上提问如何运行 shadow-cljs,我认为这是因为他们没有仔细阅读 shadow-cljs 指南,而该指南真的应该被仔细遵循。

Shadow-cljs 在简化使用 npm 及其整个生态系统方面做得非常出色。

然而,完全不使用 npm 和 JavaScript 也会让事情变得简单。
by
谢谢,John!这是一个很好的答案和后续评论,这对我帮助很大,因为我已经开始重新尝试 cljs,并且在之前玩过 shadow-cljs 之后,这次我决定使用 figwheel-main,并尽可能避免 npm/js -- 而你的评论确实巩固了我在此空间中探索时的感受(我们最后在 2013/2014 年进行了严肃的 cljs 探索,那时完全不同!)。
+4

我已经长时间使用figwheel-main进行React Native开发(大约从2016年开始),并且总的来说非常满意。

截至去年,npm包的支持也确实无懈可击。您可以这样做“yarn add @tensorflow/tfjs”。然后简单地添加一个require类似:

[@tensorflow/tfjs :as tfjs]

... 这样一切就可以正常工作(至少在React Native + CLJS上是这样。我最近没有做过基于浏览器的CLJS项目,但我假设它应该是相同的)。

React Native使用自己的打包器(称为metro),您必须使用它,因此在React Native上您无法避免使用额外工具。关于这一点,我想给出一个建议:如果您要使用JavaScript包,请使用“yarn”而不是“npm”。这应该适用于浏览器和React Native开发。多年来,我使用yarn的经验始终是最好的。我只有因为npm而经历过许多半天的浪费,只能通过一个神秘的谷歌搜索才发现是一些奇怪的npm特定问题。想不起有任何重大问题是因为yarn。

我本人没有使用shadow-cljs,但thheller是Clojure社区里一个非常有帮助和知识渊博的参与者。所以我想这个工具的质量也应该非常优秀,我也从使用shadow-cljs的人那里听到了一些好话。

0

嗨!这是一个非常好的问题。你能否提供一些额外的信息?主要是

  • 你打算用ClojureScript做什么工作?
  • 你与ClojureScript有什么经验?
  • 你与前端Web开发有什么经验?
嘿,

– 我打算构建实时SPA仪表盘,随着数据的变化更新UI。基于数据的仪表盘
– 我是一个ClojureScript的新手,大约从几个月前开始学习,因为ClojureScript在数据驱动方法上的出色之处以及减少的源代码。
– 我现在已经在基于react+redux的Web应用上工作了6个月。

希望它能回答你所有的问题。如有任何更详细的信息需求,请随时联系。
...