Jam*_*urz 13 javascript asp.net-mvc-4 bundling-and-minification asp.net-optimization
使用最新版本的MVC4,当它包含保留字作为键名时,我无法缩小javascript!
请参阅下面的错误,其中包含应该缩小的有效javascript.
有谁知道如何修复这个短的重写javascript使用[""]表示法?
PS有问题的代码是几千行,所以它不是一个选项!
/* Minification failed. Returning unminified contents.
(3,9-15): run-time warning JS1010: Expected identifier: delete
(4,9-13): run-time warning JS1010: Expected identifier: case
(5,9-11): run-time warning JS1010: Expected identifier: if
(3,9-15): run-time error JS1137: 'delete' is a new reserved word and should not be used as an identifier: delete
(4,9-13): run-time error JS1137: 'case' is a new reserved word and should not be used as an identifier: case
(5,9-11): run-time error JS1137: 'if' is a new reserved word and should not be used as an identifier: if
*/
var context = {};
context.delete = {};
context.case = {};
context.if = {};
Run Code Online (Sandbox Code Playgroud)
问题是没有像节点,盒式磁带,梳理,服务栈等其他选项
我们如何让MVC4用保留字来打球.
我发现很难相信,经过6个月加上没有对此的支持!
刚试过这个就可以了.对不起,但丑陋的代码.它将取代您命名的成员delete及其用法.
public class CustomBundle : ScriptBundle
{
public CustomBundle(string virtualPath) : base(virtualPath)
{
this.Builder = new CustomBuilder();
}
public CustomBundle(string virtualPath, string cdnPath) : base(virtualPath, cdnPath) {}
}
public class CustomBuilder : IBundleBuilder {
public string BuildBundleContent(Bundle bundle, BundleContext context, IEnumerable<FileInfo> files)
{
var content = new StringBuilder();
foreach (var fileInfo in files)
{
var parser = new Microsoft.Ajax.Utilities.JSParser(Read(fileInfo));
parser.Settings.AddRenamePair("delete", "fooDelete");
content.Append(parser.Parse(parser.Settings).ToCode());
content.Append(";");
}
return content.ToString();
}
private string Read(FileInfo file)
{
using(var r = file.OpenText())
{
return r.ReadToEnd();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4991 次 |
| 最近记录: |