3

我正在考虑为我小组的 ASP.NET MVC3 项目使用捆绑,但我无法打破它,因为我是一名初级开发人员。

JavaScript 缩小是否会影响 JavaScript 函数名称 - 即我仍然可以从内联代码中调用我用相同名称缩小的函数吗?此外,它是否会影响代码的行为方式 - 或者 JavaScript 功能和顺序是否完全保留?

4

3 回答 3

5

捆绑和缩小不会通过重命名函数名称来破坏您的代码。缩小通过删除不必要的空格、删除注释和将变量名缩短为一个字符来优化代码。

假设您执行此功能:

function BigHonkingFunctionName(bigvariablename1, bigvariablename2) {
    //I love this function
    alert(bigvariablename1 + " " + bigvariablename2);
}

缩小后的结果将是:

function BigHonkingFunctionName(n,t){alert(n+" "+t)}

如您所见,它不会影响您调用或使用该函数的方式。

阅读捆绑和缩小

于 2013-03-12T14:15:56.707 回答
3

通常 Javascript 缩小不会更改函数名称,您可以放心使用它们。Javascript 缩小通常会删除空格、换行符、缩短局部变量名称、缩短函数参数名称。

尽管如果您的代码使用eval引用在其访问范围内定义的变量的语句,您可能会遇到麻烦。一些缩小器不触及语句,如果工具引用的变量名称已被工具缩小eval,这可能会有点问题。eval

例如,下面的 Javascript 代码块可以缩小如下:

源代码:

function eval_test(var_1, var_2) {
    var_1 = "Updated var_1";
    var_2 = "Updated var_2";

    var a = eval("var_1 * var_2") + "<br>";
}

缩小的 JS:

function MyFunction(n,t){n="Updated var_1";t="Updated var_2";
var i=eval("var_1 * var_2")+"<br>"}

在此示例中,eval调用将在缩小后中断,因为函数的参数var_1,分别被缩小为和。但声明仍然没有改变。var_2eval_testnteval

尽管如此,一些缩小工具不会缩小参数/变量名称,在这种情况下 eval 语句将工作得很好。但是保持未缩小的参数/变量名称会对缩小产生负面影响,因为您的代码可能没有像应有的那样压缩/缩小。

您可以尝试以下在线缩小工具来测试和验证缩小输出:

http://utilninja.com/Computing/JavascriptMinifier

https://javascript-minifier.com/

https://jscompress.com/

于 2017-11-28T07:34:37.973 回答
0

这是一个合理的担忧。可能取决于您的 Javascript 文件的构建方式,现在捆绑器可以工作。很多时候,打包者在搞清楚所有事情并将需要存在的东西保持完整方面做得很好。

许多捆绑程序确实具有启用或禁用选项的配置选项,因此您可以将系统配置为您想要的确切方式,或者如果您遇到问题。

于 2013-03-11T21:57:37.240 回答