我对如何最好地为我的用例设置project.clj有点困惑。输出单独的js文件,但与leiningen共享一些代码?
我们试图将新技术嵌入到旧的应用程序中,因此我们使用cljs创建单独的页面并将它们嵌入到旧应用程序中(因此不是“单页应用程序”)。所以,理想情况下,一个页面的JavaScript将与另一个页面分离。页面X的javascript不包含Page Y的javascript,除了它们之间的通用功能。
我真的不知道如何最好的在project.clj中设置它。想象一下,我们在“util”命名空间中有一些常用实用程序,在“page-x”命名空间中有Page X的一些代码,并且在“page-y”命名空间中有Page Y的代码。无需复制代码就可以设置它的最佳方式是什么?可能吗?
我想象中的目录结构可能是这个样子:
src/cljs/util/...
src/cljs/page-x/...
src/cljs/page-y/...
也许,如果我设立了:source-paths
作为["src/cljs/util", "src/cljs/page-x"]
的第X页构建和使用页面-Y为Y形建?只需根据需要在数组中包含通用代码?也许像这样:
:page-x {
:source-paths ["src/cljs/util", "src/cljs/page-x"]
:compiler {
:output-to "dist/js/page-x.min.js"
:optimizations :advanced}}
:page-y {
:source-paths ["src/cljs/util", "src/cljs/page-y"]
:compiler {
:output-to "dist/js/page-y.min.js"
:optimizations :advanced}}
我会继续乱搞,但我想我会抛出这个问题,因为我这样做。
编辑:命名空间问题与上述想法。例如,我有一个src/cljs/util/util.cljs
和src/cljs/page-x/main.cljs
。我相信该约定是该文件的命名空间是它所在的目录,但如果src/cljs/util
是在:source-paths
中指定的目录,则它是根目录,因此我没有可以告诉的util.cljs的命名空间。当leiningen运行时,这会使我得到一些可爱的ERROR - required "util.util" namespace never provided
消息。