首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不重命名的ADVANCED_OPTIMIZATION

不重命名的ADVANCED_OPTIMIZATION
EN

Stack Overflow用户
提问于 2010-12-10 04:06:24
回答 3查看 577关注 0票数 1

在Google closure编译器的帮助下,我正在编写一个Google Chrome扩展。我大量使用消息API在运行在不同进程上的代码之间进行通信。这就是为什么我的文件需要单独编译。如果我使用高级优化,我还必须访问使用此消息API发送的数据中带引号的字符串的属性。这是没有问题的,但它让我的代码看起来很丑陋。但我喜欢高级优化带来的死代码删除。

我希望能够在不使用高级优化带来的重命名的情况下删除死代码。使用闭包编译器可以做到这一点吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-22 20:19:10

它是not possible out of the box,但是您可以下载源代码并使用Java语言进行自定义。

票数 1
EN

Stack Overflow用户

发布于 2011-03-10 20:56:59

是的,我同意。仅仅为了在高级模式下使用闭包编译器,就不得不在处理传递数据的所有代码中使用obj["prop"]而不是obj.prop,这是很丑陋的。

我开发的一个技巧是构建一个映射对象:

代码语言:javascript
复制
var mapping = {
  field1: "field1",
  field2: "field2"
    :
};

这个对象在被闭包编译器编译后,字段名称将被损坏(重命名),映射到原始的、未损坏的名称,例如:

代码语言:javascript
复制
var a = {
   b: "field1",
   c: "field2"
      :
};

然后,在我发送数据之前,我通过一个克隆整个数据结构的函数传递数据,在传递新对象之前,将每个损坏的字段名转换为新对象中未损坏的版本:

代码语言:javascript
复制
function cloneData(obj) {
    var newobj = {};
    foreach (var name in obj) {
        if (!obj.hasOwnProperty(name)) continue;
        var fullname = mapping[name] || name;
        newobj[fullname] = obj[name];
    }
    return newobj;
}

对于接收到的数据,执行相反的操作。

票数 1
EN

Stack Overflow用户

发布于 2010-12-22 18:56:47

在不知道要保留多少个的情况下,您可以查看文档的"Export Symbols You Want To Keep"部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4402622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档