我在Javascript Bundle中添加了敲除js文件,并在发布模式下将它们缩小了。在调试模式下,一切正常。但是启用优化后,Visual Studio会自动缩小JsBundles,它会更改参数名称,这会引起问题。例子:
整理后缩小文件
function ProgramViewModel() {
var n = this;
n.Programs = ko.observableArray([]);
n.SelectProgramForDetails = ko.observable('');
n.SelectedProgramList = ko.observableArray([]);
n.RequestedPrograms = ko.observableArray([]);
n.SelectedPrograms = ko.observableArray([]);
n.SearchSelected = ko.observable(!1);
n.ProgramName = ko.observable('');
n.CurrentPage = ko.observable(0);
n.LastHeight = ko.observable(0);
n.ProgramCatalog = ko.observableArray([{
CatalogName: 'Global Catalog',
CatalogId: 1
},
{
CatalogName: 'Area Catalog',
CatalogId: 2
}
]);
n.ColumnClicked = function (n, t) {
paginationViewModel.ColumnClicked(t);
programViewModel.GetPrograms()
};
n.ShowData = function (n) {
$('html, body').animate({
scrollTop: paginationViewModel.offset()
}, 500);
paginationViewModel.ShowData(n);
programViewModel.GetPrograms()
};
}
归档之前
function ProgramViewModel() {
var self = this;
self.Programs = ko.observableArray([]);
self.SelectProgramForDetails = ko.observable("");
self.SelectedProgramList = ko.observableArray([]);
self.RequestedPrograms = ko.observableArray([]);
self.SelectedPrograms = ko.observableArray([]);
self.SearchSelected = ko.observable(false);
self.ProgramName = ko.observable("");
self.CurrentPage = ko.observable(0);
self.LastHeight = ko.observable(0);
// Default Catalog for now
self.ProgramCatalog = ko.observableArray([
{ CatalogName: "Global Catalog", CatalogId: 1 },
{ CatalogName: "Area Catalog", CatalogId: 2 }
]);
self.ColumnClicked = function (data, e) {
paginationViewModel.ColumnClicked(e);
programViewModel.GetPrograms();
};
self.ShowData = function (mode) {
$('html, body').animate({
scrollTop: paginationViewModel.offset()
}, 500);
paginationViewModel.ShowData(mode);
programViewModel.GetPrograms();
};
}
问题在于,minifier无法识别作用域中的关键字,因此会将相同作用域中的变量名称更改为现有名称。当n
在该范围内有一个命名变量时,它将再次将其他函数变量重命名为n(可能会发出也可能不会发出,不太确定)。
有任何缩小工具可以帮助更有效地缩小KnockoutJs文件?
Uglifyjs2具有可关闭的mangler选项,而无需保留变量名:https : //github.com/mishoo/UglifyJS2#mangler-options
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句