javascript - MVC 4 捆绑和缩小 - 变量名称更改

标签 javascript asp.net-mvc-4 bundling-and-minification minify

我正在用 .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/

相关文章:

javascript - 我如何正确处理依赖于 ViewChild 的组件的变化检测和 Angular 2 中可观察到的数据?

c# - Intranet 应用程序中的 SimpleMembership

jquery - 日期在 jquery 中显示不正确

asp.net-mvc - SimpleMembership 的 IsUserInRole 错误

javascript - 使用 CDN 的外部模块的 Webpack

web-applications - 如何在 Visual Studio 2015 中缩小 CSS 和 JavaScript 文件

javascript - 在 Jquery 中添加具有属性的列表项

javascript - JavaScript 中变量 "name"的奇怪行为

javascript - AWS Lambda 函数调用中的事件和上下文是什么?

asp.net - 如何为 Release模式设置debug false