如何为不同的页面使用不同的JS输出?

Kon*_*rus 4 clojurescript

假设我有两个页面共享很多代码,许多库等,但有一些差异.举一个具体的例子,我包含了jQuery,并且在每个页面中都有"document ready"(又名$(function() { ... }))中的不同功能.

使用JS会很容易.我会在每个页面中包含jQuery,并在每个页面上包含不同的部分<script>,或者包括script-behind-page-A.jsin pageA.htmlscript-behing-page-B.jsin pageB.html.

如何使用ClojureScript获得相同的结果?

我怀疑编译输出是如此之大,以至于编译器会发出一大堆JavaScript.在这种情况下,它显然不能有两个不同的"文档就绪"功能.

建议的流程是否使代码主要包含使您能够执行的功能,初始化的状态变量很少,并根据需要使用普通JS单独初始化每个页面?

Den*_*ida 5

我认为推荐的方法将是Mimmo Cosenza在这个ClojureScript教程中解释的内容:

  • 生成一个单独的大型JS输出文件(所以当它上线时你优化/ gzip)
  • 对函数使用不同的命名空间,确保为每个页面至少导出一个"入口点函数"
  • 在每个HTML文件上,调用所需的"入口点函数",如下所示:

    <!-- on the bottom of welcome.html -->
    <script src="js/output.js"></script>
    <script>myapp.welcome.init();</script>
    
    <!-- on the bottom of login.html -->
    <script src="js/output.js"></script>
    <script>myapp.login.init();</script>
    
    Run Code Online (Sandbox Code Playgroud)

教程第6部分详细解释了这一点.