4

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

有了 JS 就很容易了。我会在每个页面中包含 jQuery,并在每个页面上包含不同的部分<script>,或者包含script-behind-page-A.jspageA.htmlscript-behing-page-B.jspageB.html

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

我怀疑编译输出太大了,最好让编译器发出一大堆 JavaScript。在那种情况下,它显然不能有两个不同的“文档就绪”功能。

建议的流程是否主要由使您能够执行操作的函数、初始化的少量状态变量以及根据需要使用纯 JS 单独初始化每个页面的函数组成?

4

1 回答 1

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>
    

本教程的第 6 部分对此进行了详细说明。

于 2013-03-14T02:07:13.350 回答