javascript - ":optimizations :advanced"的全局变量/函数过多

标签 javascript clojurescript leiningen google-closure-compiler bundling-and-minification

从我的网络应用程序中,当使用带有“:optimizations:none”的代码进行编译时,将所有js文件加载到浏览器后,“window”对象上大约有大约300个全局项目

但是,当使用“:optimizations :advanced”编译代码时,大约有 10K 全局项(函数和对象)。

看起来缩小策略正在使一切变得全局化。有没有办法改变它的行为?

这是一个重现 repo

运行“lein do clean && lein cljsbuild Once”并检查“lein-cljsbuild/example-projects/advanced/resources/public/js/main-debug.js”

#

更新: 原因“:output-wrapper”不适用于我的情况是我在构建配置中使用“:modules”并且一个模块将依赖于另一个模块。编译器无法使用 (function(){})() 包装模块,因为它会破坏依赖关系。例如,模块 foo 必须从模块 bar 访问 var bar。

最佳答案

您可能需要查看 :output-wrapper 编译器选项: https://clojurescript.org/reference/compiler-options#output-wrapper

关于javascript - ":optimizations :advanced"的全局变量/函数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830636/

相关文章:

javascript - 在浏览器环境中,是否可以在 JavaScript 中获取 SSL 证书列表?

javascript - JavaScript 中的 "=>"(由等于和大于组成的箭头)是什么意思?

clojurescript - 当我将它们分配给局部变量时,为什么 js 函数会失败?

clojure - 在配置文件中正确使用 Environ 库

clojure - 通过基于 leinigen 的 repl 加载 clj 文件

javascript - 尝试使用 .split() 时未捕获 JS 中的 TypeError

javascript - 检测地址栏是否显示在 iPhone 浏览器中

clojure - 是否有一个在线工具可以自动缩进和格式化Clojure代码,就像有很多JSON一样?

reactjs - 如何在 ClojureScript/Reagent 中动态更改页面标题和描述

Clojure 如何构建 Linux 可执行文件