2013-12-19 26 views
8

我正在使用Grunt與grunt-contrib-uglify任務聯繫起來,以縮小我應用程序中的JavaScript。UglifyJS'use strict'statements

縮小後,除了第一個語句外,它會除去每個'use strict'語句,所以我得到一個巨大的JavaScript文件,頂部有'use strict'指令。

問題是,全球'use strict'指令使瀏覽器執行我在「嚴格模式」項目中使用的每個庫的代碼,並且它導致錯誤,因爲並非每個第三方代碼都是爲嚴格模式編寫的。

關於如何解決這個問題的任何想法?

+0

UglifyJS2項目頁面上的[this comment](https://github.com/mishoo/UglifyJS2/issues/128#issuecomment-13805371)中記載了這個問題並不容易解決。 –

+0

@rawry你可以嘗試使用下一個版本https://github.com/mishoo/UglifyJS2。看起來問題在這個新版本中解決了。 – Vishwanath

回答

6

如果您將所有腳本與IIFE包裝在一起,那麼grunt-contrib-uglify將不會將該語句放在停止位置,而是會將其放在您編寫的每個IIFE中。

(function() { 
    'use strict'; 

    // do stuff 
})(); 

是的,它是更多的代碼,但如果你gzipping文件,它應該是一個非問題。此外,這將保留您在全局範圍之外定義的任何變量,從而獲得更高性能的代碼。

+0

剛剛意識到這個問題是古老的,對不起! –