首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可重用的ClojureScript库

可重用的ClojureScript库
EN

Stack Overflow用户
提问于 2014-12-03 22:05:57
回答 2查看 410关注 0票数 6

因此,我将我的大型Clojure项目一分为二。

我编译了核心部分并制作了一个Uberjar。

然后键入:

代码语言:javascript
复制
lein deploy clojars

将该jar公开,然后将其作为依赖项添加到我的应用程序的project.clj文件中。

这段代码是用cljx编写的,所以它可以编译成javascript。

在不让整个ClojureScript虚拟机重复两次的情况下,将两个cljx代码库合并到两个单独的javascript库中需要哪些等效步骤?

更新:只是为了澄清几件事。

1)我知道我可以转到.cljc而不是.cljx。我唯一担心的是,这看起来很新,我不知道我的代码的现有用户是否可能拥有它。但我可能很快就会采取这一行动。关于cljc的答案也是受欢迎的。

2)我已经成功地将我的代码编译成一个单一的main.js文件。我正在寻找的是如何编译单独的cljs库,这些库可以包含在其他cljs项目中。因为每次我在cljs中编译一些东西时,我都会得到一个包含整个clojurescript VM的main.js文件。

3)我回到这个问题的动机之一是我想要开始使用Figwheel。因此,我希望能够在clojurescript中创建库,并将其放入我正在通过Figwheel开发的新clojurescript项目中。因此,我想我会在这个新项目的project.clj文件中引用它们,并将它们作为已编译的.js文件包含在网页中。这一点我说错了吗?

EN

回答 2

Stack Overflow用户

发布于 2014-12-09 00:30:31

票数 2
EN

Stack Overflow用户

发布于 2015-08-09 00:09:54

如果没有关于project.clj的更多详细信息,就很难说出配置中的错误或遗漏之处,但我将尝试介绍您应该查看的最重要部分。

不要使用cljx。使用阅读器条件!

现在, 支持读者条件(cljc)。如果您有机会升级到clojure 1.7.0,那么我的建议是这样做,并将cljx留在后面:您将避免来自cljx的许多问题,因为cljc是clojure编译器所知道的东西,而不是使用构建工具(需要与构建管道的其余部分同步)。

如果您仍要使用cljx...

我不会重复优秀的README from cljx中涵盖的所有内容,但只需要指出一些相关的部分:

  1. 您必须确保在管道中的其他任务(javaccompileuberjar甚至testcljsbuild test)之前调用cljx once。因此,您可能希望在project.clj中创建aliases或修改默认:prep-tasks。更多信息:参见the Installation section
  2. Your cljx :output-path应该添加到你的cljsbuild :source-paths中。请参阅the Usage section

最后但并非最不重要的是:

  1. 在使用cljsbuild时,不要在依赖项矢量中将依赖项声明为:classifier "aot"。只有在你知道自己在做什么的情况下才能使用它。如果您有依赖问题,请在开发过程中将其删除。无论你使用的是cljx,cljc还是普通的cljs,这一点都适用。
  2. 看看其他项目的cljx配置。例如:Prismatic/schema"Switch to reader conditionals" commit in Sablono
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27273731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档