[英]Closure compiler Advanced Optimization prevent object property renaming
假设以下代码。
1)在ClosureTestClass构造函数中,我们从外部系统传递了一个对象。 如果在此代码中将inputObjectFromExternalSystem的property1重命名,则从外部系统发送的对象将没有重命名的属性。 有没有一种方法可以指定编译器不重命名特定对象的属性。
我知道我们可以通过使用
inputObjectFromExternalSystem['property1'].
我在/ ** @expose * /之类的注释中寻找内容。 我尝试了/ ** @lends * /,但是没有用。
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print
// @use_closure_library true
// ==/ClosureCompiler==
/** @export */
var ClosureTestClass = (function () {
function ClosureTestClass(inputObjectFromExternalSystem) {
this.property1 = inputObjectFromExternalSystem.property1;
this.property2 = inputObjectFromExternalSystem.property2;
}
/** @expose */
ClosureTestClass.prototype.printProperty = function () {
console.log(this.property1);
console.log(this.property2);
};
return ClosureTestClass;
})();
/** @export */
var ClosureTestClassUse = (function () {
function ClosureTestClassUse () {
this.closureTest = new ClosureTestClass;
}
/** @expose */
ClosureTestClassUse.prototype.print = function () {
console.log(this.closureTest);
};
return ClosureTestClassUse;
})();
var a = new ClosureTestClassUse();
2)/ ** @lends * /的用例是什么
@export
旨在防止重命名-并且是完成此操作的唯一受支持的注释。 您还必须使用--generate_exports
标志,并且源代码必须包含Closure-library中的base.js
文件,或者必须包含用于定义具有相同方法签名的goog.exportSymbol
和goog.exportProperty
定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.