gpt4 book ai didi

javascript - 使用 UglifyJS Mangle 嵌套类和变量

转载 作者:数据小太阳 更新时间:2023-10-29 04:25:13 25 4
gpt4 key购买 nike

我使用 UglifyJS 来缩小一组串联的文件,效果很好但还不够好。构建的库使用命名空间,因此类、函数和常量存储在根命名空间变量中:

(function() {
var root = { api:{}, core:{}, names:{} };

/* util.js file */
root.names.SOME_LONG_NAMED_CONST='Angel';

/* Person.js file */
root.core.Person = function(name) { this.name = name };

/* API.js with the functions we want to expose */
root.api.perform = function(param_for_api) { /* do something */ }

window.lib_name.perform = root.api.perform;

})();

缩小到非最小版本

(function(){var a={api:{},core:{},names:{}};a.names.SOME_LONG_NAMED_CONST="Angel",a.core.Person=function(a){this.name=a},a.api.perform=function(){},window.lib_name.perform=a.api.perform})();

据我所知,uglify 可能认为 root var 是一种必须保持原样且不能更改的数据结构。有没有办法让 UglifyJS 破坏根命名空间中的嵌套名称?

最佳答案

当您最小化 Javascript 时,您只能更改变量的名称,api、核心和名称不是变量,而是对象的属性。如果这些被最小化器改变了,你可能会得到意想不到的结果。如果在你的代码中调用

root["api"].perform = function()...

甚至类似

function doIt(section, method, argument) {
root[section][method](argument);
}
doIt('api','perform', 101);

所有完全合法的 JS,但最小化器永远无法弄清楚发生了什么。

关于javascript - 使用 UglifyJS Mangle 嵌套类和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16334971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com