Ree*_*Law 3 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="text/javascript">goog.require('hello');</script>
Run Code Online (Sandbox Code Playgroud)
我知道Google Closure Library用于将Clojurescript编译成Javascript.为什么HTML页面也需要它?它不能hello.js在上面的例子中编译自己(或使用高级编译的必要组件)吗?
我真正想要的只是需要一个javascript文件而不是几十个文件/goog/.这不是编译器的用途吗?我只是不明白为什么它需要包含在页面中.
在编译时,只需要包含goog/base.js头:optimizations:none.
原因:优化:none产生多个文件是因为使用此设置,Google Closure编译器根本不运行.相反,ClojureScript编译器只是将编译后的JavaScript直接写入文件,而不是通过Closure编译器传递它.因此,生成的JavaScript既没有优化也没有多个文件连接成一个JavaScript文件.ClojureScript的第21页还提供了有关此编译模式的讨论:启动和运行(此处提供免费样本,包括第21页)
我个人很少使用:优化:无,而是使用:在开发过程中简单,并且:用于生产.
两者:simple和:advanced只生成一个JavaScript文件作为输出,然后只需要一个脚本标记,例如
<script src="/js/myapp.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我在下面提供了一个示例cljsbuild配置:
: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"]}}]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |