0

從我的web應用程序中,當用帶有「:optimizations:none」的代碼進行編譯時,加載所有js文件後,「window」對象上有大約300個全局項進入瀏覽器帶有「:optimizations:advanced」的全局變量/函數太多

但是,當編譯帶有「:optimizations:advanced」的代碼時,有大約10K個全局項目(函數和對象)。

似乎微型化戰略正在使所有事情都變得全球化。有沒有辦法改變它的行爲?

這裏是一個攝製repo

運行 「雷音做清潔& &雷音cljsbuild一次」 檢查 「雷音-cljsbuild /例如項目/高級/資源/公/ JS /主debug.js」

更新: 原因「:輸出包裝」不適用於我的情況是我在我的構建配置中使用「:模塊」,一個模塊將取決於另一個。編譯器不能用(function(){})()打包模塊,因爲它會打破依賴關係。例如,模塊foo必須從模塊欄訪問變量欄。

+0

@DanielCompton因爲它把一切都變成全局範圍。 –

回答

2

你可能想看看:output-wrapper編譯器選項: https://clojurescript.org/reference/compiler-options#output-wrapper

+0

它不適用於我的情況。這裏是一個repro https://github.com/shrimpy/lein-cljsbuild/tree/module-test –

+0

'output_wrapper'在這裏是正確的答案。 @XiaominWu你將不得不更具體地說明爲什麼它不起作用。 –

+0

@ChadKillingsworth更新了我的帖子。這是因爲我使用「:模塊」 –