Javascript 理解Clojurescript和Google闭包编译器之间的关系

Javascript 理解Clojurescript和Google闭包编译器之间的关系,javascript,google-closure-compiler,clojurescript,Javascript,Google Closure Compiler,Clojurescript,许多人在脚本标签中包含了goog/base.js文件,然后使用goog.require('your_script')启动应用程序运行。例如,以下是链接教程中HTML文件的标题: <script type="text/javascript" src="out/goog/base.js"></script> <script type="text/javascript" src="hello.js"></script> <script type="

许多人在脚本标签中包含了
goog/base.js
文件,然后使用
goog.require('your_script')
启动应用程序运行。例如,以下是链接教程中HTML文件的标题:

<script type="text/javascript" src="out/goog/base.js"></script>
<script type="text/javascript" src="hello.js"></script>
<script type="text/javascript">goog.require('hello');</script>

goog.require('hello');
我知道Google闭包库用于将Clojurescript编译成Javascript。为什么HTML页面中也需要它?它不能将自身(或使用高级编译的必要组件)编译到上面示例中的
hello.js
中吗


我真正想要的是只需要一个javascript文件,而不是
/goog/
中的几十个文件。这不是编译器的作用吗?我只是不明白为什么需要将其包含在页面中。

在使用:optimizations:none进行编译时,只需要包含goog/base.js头

:optimizations:none生成多个文件的原因是googleclosure编译器根本没有使用此设置运行。相反,ClojureScript编译器只是将编译后的JavaScript直接写入文件,而不是通过闭包编译器传递。因此,生成的JavaScript既没有经过优化,也没有将多个文件连接到单个JavaScript文件中。ClojureScript:Up and Running(包括第21页在内的免费示例)第21页还讨论了这种编译模式

我个人很少使用:优化:无,而是在开发过程中使用:simple,在生产中使用:advanced

simple和advanced都只生成一个JavaScript文件作为输出,然后只需要一个脚本标记,例如

  <script src="/js/myapp.js" type="text/javascript"></script>

非常感谢。我觉得我错过了一些简单的事情。
 :cljsbuild {:builds [{:id "dev"
                       :source-paths ["src"]
                       :compiler {:output-to "resources/static/js-dev/myapp.js"
                                  :output-dir "resources/static/js-dev"
                                  :optimizations :simple
                                  :preamble ["react/react.min.js"]
                                  :externs ["react/externs/react.js"]
                                  :source-map "resources/static/js-dev/myapp.js.map"
                                  :pretty-print true}}

                      {:id "live"
                       :source-paths ["src"]
                       :compiler {:output-to "resources/static/js-live/myapp.js"
                                  :output-dir "resources/static/js-live"
                                  :optimizations :advanced
                                  :pretty-print false
                                  :preamble ["react/react.min.js"]
                                  :externs ["react/externs/react.js"]}}]}