2014-12-31 17 views
0

我对如何最好地为我的用例设置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.cljssrc/cljs/page-x/main.cljs。我相信该约定是该文件的命名空间是它所在的目录,但如果src/cljs/util是在:source-paths中指定的目录,则它是根目录,因此我没有可以告诉的util.cljs的命名空间。当leiningen运行时,这会使我得到一些可爱的ERROR - required "util.util" namespace never provided消息。

回答