从Javascript中删除IIFE包装器

时间:2014-01-06 14:33:43

标签: javascript minify

我正在为我的Ember.js项目构建系统,我正在尝试从某些Javascript文件中删除IIFE。我的大多数文件看起来像这样:

(function() {
    'use strict';

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

我将每个文件包装在IIFE中,因为它允许我更容易地声明严格模式。我认为这也是一个很好的习惯,因为它可以作为安全包装。但是,大约3/4的文件在IIFE中不包含任何额外的变量,只有Ember组件被放入App命名空间。这意味着当我连接文件时,我可以安全地删除IIFE并保存大约17个字符。 (不是很大,但每个字节都很重要,对吗?)

那么有什么样的库或编译器可以为我做这个吗?具体来说,检测何时移除IIFE并且不安全?或者这超出了静态分析的范围?

1 个答案:

答案 0 :(得分:0)

您可以使用节点库falafelescodegen执行类似的操作。

基本上你要创建一个使用falafel来处理源代码的构建脚本。您需要弄清楚顶级IIFE,然后直接在其中是否有任何变量等。

可能没有必要使用escodegen,因为您可能只是清除节点而不必生成新的JS代码。

在任何情况下,除了编写这样的自定义分析器之外,我认为没有其他方法可以做到这一点。