如何在不同的clojurescript项目中使用公共依赖?

IT技术 javascript reactjs clojurescript leiningen reagent
2021-05-13 04:46:11

我写了一个clojurescript项目。它是一种试剂成分。现在我想在其他 clojurescript 项目中使用这个组件。这就是我所做的:我编译了我的 cljs 项目,然后将结果编译文件放入其他项目的 js 文件夹中。此外,我需要 index.html 中的该文件。最后我从 cljs 文件调用我的组件

(.slider-view (.-views js/swipe) (clj->js [[:p "1"]
                                           [:p "2"]
                                           [:p "3"]]))

它有效。但我有一个问题。我的项目和我连接组件的项目有共同的要求。例如 React 和 ReactDOM。如何从我的项目中排除这两个引用,然后从另一个项目中连接它?有替代方法吗?例如直接从另一个 cljs 项目中 require cljs 命名空间

2个回答

即使您可以防止 JavaScript 库被两次包含,您仍然会有大量的 ClojureScript 标准库被编译两次。正如您所建议的,您需要将您的第一个项目放在第二个项目的类路径中(通过将其添加到您的 project.clj 或等效文件中),然后直接包含该命名空间。

基于贾斯汀非常正确的答案......

你描述的正是正常的ClojureScript依赖关系。在这种情况下,依赖项是您创建的东西,而不是其他人现有的库,但它仍然是相同的情况。

有一个重要的微妙之处需要注意。您可能希望同时开发两个项目。这可能看起来很棘手,因为依赖项通常需要一个版本号、部署和所有其他繁重的工作,这对于快速开发来说太痛苦了。

幸运的是,标准的 ClojureScript 工具为此提供了一个解决方案,称为 Leiningen checkouts 目录,它的工作原理是让您在主项目的目录中放置一个指向依赖项的符号链接。

详细信息在Leiningen文档checkout-dependencies部分或者只是在网上搜索“Clojure checkouts”,如果它会衰减的话。

随着您对这些技术的深入了解,您可能会遇到一些涉及 Figwheel 工具的更微妙的问题。当你到达那个阶段时,这篇文章也可能有用。