dor*_*ach 1 javascript minify asp.net-mvc-4 bundling-and-minification
我正在 .net mvc 4 中编写一个应用程序。我开始使用 .net 捆绑,但在缩小时遇到了一些问题。由于变量的名称被缩短为一个字母,因此变量名称相同(来自不同的脚本)会产生一些冲突,从而产生各种烦人的错误和错误。这是一个已知的问题,还是我错过了什么?有没有办法允许在不更改变量名称的情况下缩小脚本(空格和 stuf)?谢谢!
你错过了一些东西。
您确实应该将您的脚本与页面上的其他脚本隔离开来。一般模式是将您的代码包装在立即调用的函数中:
(function() {
var person = { /* whatever */ };
})(); // <- notice the () invocation
Run Code Online (Sandbox Code Playgroud)
在这个函数中,你的所有变量(只要它们是用var关键字声明的)都在函数范围内,并且不会破坏外部声明的变量(即使在被缩小之后,就像你的情况一样)。minifier 可以自由地修改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 = {};
})();
Run Code Online (Sandbox Code Playgroud)
另请参阅有关 javascript 变量范围的此 StackOverflow 问题。