我正在用 .net mvc 4 编写一个应用程序。我开始使用 .net 捆绑,但在缩小时遇到了一些问题。因为变量的名称被缩短为一个字母,所以变量名称相同(来自不同的脚本)会出现一些困惑,从而产生各种烦人的错误和错误。 这是一个已知问题,还是我遗漏了什么? 有没有办法允许在不更改变量名称的情况下缩小脚本(空格和 stuf)? 谢谢!
最佳答案
你错过了什么。
您真的应该将您的脚本与页面上的其他脚本隔离开来。一般模式是将您的代码包装在 immediately-invoked function 中:
(function() {
var person = { /* whatever */ };
})(); // <- notice the () invocation
在这个函数中,你所有的变量(只要它们是用 var
关键字声明的)都在函数范围内并且不会破坏外部声明的变量(即使在被缩小之后,如你的情况)。缩小器可以自由地将对 person
的所有引用修改为更短的变量名,因为这些引用严格包含在匿名函数中。
当然,如果您需要导出一个全局变量供其他脚本使用,那么一定要明确说明:
(function() {
//aLocalPerson exists only within this function
var aLocalPerson = {};
//aGlobalPerson can be accessed in other scripts because it is
//declared on the window object and is implicitly available everywhere.
//Because its a property on the window object, no decent minifier will
//mess with its name.
window.aGlobalPerson = {};
})();
另见 this StackOverflow question关于 javascript 变量范围。
关于javascript - MVC 4 捆绑和缩小 - 变量名称更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25021865/