1

我在BundleTransformernuget 和System.Web.OptimisationASP.Net 应用程序中使用它。根据各种文档,这个缩小器应该“删除无法访问的代码”。我知道它不像谷歌关闭(我目前不能使用)那么激进,但我什至无法让最简单的情况下工作,例如;

function foo() {
}

wherefoo不是从任何地方调用的。我可以理解说这可能是一个导出函数的论点,但我看不到区分它的方法。我所有的 JS 代码都是串联的,因此如果我能找到正确的开关,它就可以确定是否需要该功能。

我发现省略不必要代码的唯一方法是使用debugLookupListweb.config 中的属性,BundleTransformer但这似乎是一把大锤来破解坚果。它不是很细。

有没有人有一个例子说明如何编写这个缩小器可以识别的所谓的“无法访问的代码” ?

这是一个在线测试的地方

4

1 回答 1

2

我怀疑minifier是否有办法知道是否可以安全地删除全局定义的函数(因为它不知道完整的范围)。另一方面,它可能不会删除任何未使用的函数,并且可能只对无法访问的代码(即 a 之后的代码return)感兴趣。

使用 JavaScript 模块模式,您未使用的私有函数很可能会被正确放置(尽管我没有对此进行测试)。在下面的示例中,缩小器应该只对删除名为的函数有信心privateFunction。它是否将未使用的函数视为无法访问的代码是另一回事。

var AmazingModule = (function() {
    var module = {};

    function privateFunction() {
        // ..
    }

    module.otherFunction = function() {
        // ..
    };

    return module;
}());

function anotherFunction() {
    // ..
}
于 2014-06-25T13:21:59.590 回答