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

时间:2013-03-09 16:38:35

标签: clojurescript

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

使用JS很容易。我会在每个页面中包含jQuery,并在每个页面上包含<script>的不同内容,或在script-behind-page-A.js中包含pageA.html,在script-behing-page-B.js中包含pageB.html。< / p>

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

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

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

1 个答案:

答案 0 :(得分:5)

我认为推荐的方法将是ClojureScript tutorial by Mimmo Cosenza中解释的内容:

  • 生成一个单独的大型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>
    

详细解释了part 6 of the tutorial