Google 关闭的项目范围混淆

Project-wide obfuscation with Google Closure

我正在使用 Google 的闭包编译器(设置为 compilation_level=ADVANCED_OPTIMIZATIONS)成功 minify/obfuscate 我的 javascript 代码(我'我目前正在使用 Sublime 文本插件半手动执行此操作)。

我的 javascript 的绝大部分都在一个 .js 文件中,但当然,如果我混淆了这段代码,并且在我的项目 html 中还有 javascript 的其他片段文件(可能指的是预混淆函数名称),那么我将 运行 解决问题。

处理这种困境的最佳方法是什么?理想情况下,我可以通过编译器 运行 整个项目,编译器会识别 html 文件中的 javascript 并以一致的方式混淆它们。

导出您需要从 HTML 代码中调用的函数,这些函数不会被编译器重命名(缩小)。要么使用 @export 标记作为类型定义的一部分,要么在定义后调用 goog.exportSymbolgoog.exportProperty。请参阅此维基页面中有关 @export.

的部分

请参阅有关 Advanced Compilation and Externs 页面上的 解决方案:导出您想要保留的符号 部分进行讨论,还有另一种方法:

function displayNoteTitle(note) {
  alert(note['myTitle']);
}
// Store the function in a global property referenced by a string:
window['displayNoteTitle'] = displayNoteTitle;

如果需要,您可以为导出的内容使用晦涩的名称。如果 html 文件中有很多代码,请将该代码移动到单个文件中的函数并从 html 调用这些函数。 Closure Compiler 不会编译 html 文件中的代码。