【问题标题】:How do I tell the Closure javascript compiler to not obfuscate the names of methods of webkitAudioContext?如何告诉 Closure javascript 编译器不要混淆 webkitAudioContext 的方法名称?
【发布时间】:2012-09-04 02:09:27
【问题描述】:

我在使用 Google Closure javascript 编写的应用程序中使用 Webkit 浏览器原生的 webkitAudioContext 构造函数。

在我使用 Plovr 在 ADVANCED 模式下编译我的 javascript 后,我​​发现我的 webkitAudioContext 对象的 decodeAudioData 方法被重命名为混淆术语 c。说实话,

编译前:

var myAudioContext = new webkitAudioContext();
myAudioContext.decodeAudioData(fileData, myCallBackFunction);

编译后:

(new webkitAudioContext).c(a,b);

如何告诉 Closure javascript 编译器不要混淆 webkitAudioContext 的方法名称?我试过打电话

goog.exportSymbol('webkitAudioContext.prototype.decodeAudioData', webkitAudioContext.prototype.decodeAudioData);

无济于事。

【问题讨论】:

标签: javascript google-closure-compiler google-closure-library


【解决方案1】:

正如Felix Kling 在他的评论中提到的,externs files 用于防止重命名外部定义的符号。 Closure Compiler 源代码在以下目录下有 externs 文件:

后备箱
|-- externs
|-- 贡献
|-- externs

externs 文件contrib/externs/w3c_audio.js 包括webkitAudioContext

查看 plovr externs 配置选项。

【讨论】:

  • 目前,实验性 w3 api 不包含在默认外部。在使用默认外部人员之前,他们通常有时间稳定下来。正如 Chris 所说,它们中的大多数都可以在 contrib 文件夹中找到。但是,发现自上次刷新文件以来已添加/更改的缺失属性或方法并不罕见。
  • 谢谢!在我的 config.js 文件中指定 "externs": "//chrome_extensions.js", 有效。但是,即使我手动下载并将“w3c_audio.js”添加到contrib/externs 文件夹中,在我的配置文件中指定"externs": "//w3c_audio.js," 也不起作用。我需要在其他地方编辑设置吗?
  • 指定 "externs": "//w3c_audio.js" 不起作用,因为 2012 年 2 月的 plovr 版本与 2012 年 2 月 2 日起的 Closure Compiler 修订版 1559 捆绑在一起,其中不包括 w3c_audio.js。您需要在 plovr 配置中指定 w3c_audio.js 的本地副本的路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多