我对如何最好地为我的用例设置project.clj感到困惑。
我们正在尝试将新技术嵌入到旧版中,因此我们使用cljs创建单独的页面并将它们嵌入到我们的旧应用程序中(因此,不是"单页应用程序" )。因此,理想情况下,一个页面的javascript将与另一个页面分开。第X页的javascript不包含Page Y的javascript,除了它们之间常见的任何功能。
我真的不确定如何在project.clj中设置它。想象一下,我们在" util"中有一些常见的实用程序。命名空间," page-x"中的Page X的一些代码;命名空间和" page-y"中的页面Y的代码命名空间。在不重复代码的情况下设置它的最佳方法是什么?有可能吗?
我想目录结构可能如下所示:
src/cljs/util/...
src/cljs/page-x/...
src/cljs/page-y/...
也许如果我为Page X构建设置:source-paths
为["src/cljs/util", "src/cljs/page-x"]
,并使用page-y进行Page 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
消息。
答案 0 :(得分:0)
据我所知,编译器现在只能用于输出单个文件,所以现在没有代码拆分/公共共享代码包。