我正在使用来自nuget的BundleTransformer
和ASP.Net应用中的System.Web.Optimisation
。根据各种文档,minifier应该“删除无法访问的代码”。我知道它不像google关闭那样具有攻击性(我目前无法使用)但是我无法让最简单的情况起作用,例如;
function foo() {
}
其中foo
未从任何地方调用。我可以理解这可能是一个导出函数的论点,但我看不出区分它的方法。我的所有JS代码都是连接起来的,所以如果能找到合适的开关,它就能确定是否需要该功能。
我发现省略不必要代码的唯一方法是使用web {.config中的debugLookupList
属性BundleTransformer
,但这似乎是一个破解坚果的大锤。它不是很精细。
有没有人有一个如何编写这个缩小器将识别出来的所谓“无法访问的代码”的例子?
的地方答案 0 :(得分:2)
我怀疑 minifier 是否有任何方法可以知道是否可以安全地删除全局定义的函数(因为它不知道完整的范围)。另一方面,它可能不会删除任何未使用的函数,并且可能只对无法访问的代码感兴趣(即return
之后的代码。)
使用JavaScript模块模式,您未使用的私有函数很可能会被正确地保存(虽然我没有对此进行测试)。在下面的示例中, minifier 应该对删除名为privateFunction
的函数充满信心。是否将未使用的功能视为无法访问的代码是另一回事。
var AmazingModule = (function() {
var module = {};
function privateFunction() {
// ..
}
module.otherFunction = function() {
// ..
};
return module;
}());
function anotherFunction() {
// ..
}