javascript - 如何缩小 knockoutjs 代码文件

标签 javascript asp.net asp.net-mvc-4 knockout.js minify

我在 Javascript Bundles 中添加了 knockout js 文件,在 Release模式下这些文件被缩小了。在 Debug模式下一切正常。但是当优化开启并且 JsBundles 被 Visual Studio 自动缩小时,它会更改参数名称,这会开始导致问题。示例:

美化后的缩小文件

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

关于javascript - 如何缩小 knockoutjs 代码文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082138/

相关文章:

javascript - 过滤并比较 typescript 中的两个数组与条件

javascript - 传单搜索 - 无法读取未定义的属性 'properties'

c# - 如何根据 gridview 中的列值制作组(部分)?

asp.net - 字段密码返回空以在编辑模式下查看

javascript - 在引导框对话框中使用 Blaze.render - 出现奇怪的错误

javascript - 如何修复参数 "documentPath"的值不是有效的资源路径?

asp.net - 当子页面关闭时,是否可以在父页面上调用服务器端事件?

asp.net - 为什么 IE 无法从 Response.Write 服务器我的 CSV 文件?

asp.net-mvc - 将另一个 "Pet"添加到模型表单

html - 3 个元素的对齐方式(左、右 1、右 2)