2014-01-06 50 views
0

我正在爲我的Ember.js項目構建系統,我試圖從某些Javascript文件中刪除IIFE。我的大多數文件找出來是這樣的:從Javascript中刪除IIFE包裝

(function() { 
    'use strict'; 

    App.FooBarController = Ember.Controller.extend({}); 
})(); 

我包中的每個文件的IIFE因爲它使我更容易地申報嚴格模式。我認爲,這也是一個很好的習慣,因爲它起到安全包裝的作用。但是,大約3/4的文件在IIFE中不包含任何額外的變量,只是將Ember組件放入App命名空間。這意味着當我連接文件時,我可以安全地移除IIFE並保存約17個字符。 (沒有什麼大不了的,但是每個字節都是對的,對不對?)

那麼有什麼樣的庫或編譯器能夠爲我做這個嗎?具體而言,檢測何時移除IIFE並不安全?還是超出了靜態分析的範圍?

+0

「或者超出了靜態分析的範圍」 - 我想你回答了你自己的問題:)。您可以使用搜索替換功能在文本編輯器中實現自動化。 – elclanrs

+0

我只是認爲它不會受到傷害。 Javascript社區是一羣資源豐富的人。 :) – GJK

回答

0

你可以使用節點庫falafelescodegen做類似的事情。

基本上你會創建一個使用falafel來處理源代碼的構建腳本。你需要弄清楚頂級IIFE,然後是否有任何變量直接在它內部等。

可能沒有必要使用escodegen,因爲您可能只能清除節點而不必生成新的JS代碼。

在任何情況下,除了編寫像這樣的自定義分析器之外,我不認爲還有其他方法可以做到這一點。