我多年来一直使用 YUI Compressor 来缩小和混淆 JS 文件。但现在我需要在服务器上混淆和缩小动态生成的 JavaScript 代码。因此,这里的主要区别在于,不会有应该混淆的 JS 文件,而是向服务器(Java)发出请求,该服务器应该生成部分 JS 代码并返回已经缩小和混淆的文件。
YUI Compressor 不提供这样做的可能性。我查看了源代码,并且已经弄清楚应该重写哪些方法才能使其工作。我不想这样做(但如果没有其他办法,就必须这么做)。
那么还有其他 Java 库允许直接从 Java 代码中缩小和混淆 JavaScript 字符串吗?
计划a)
不要将 YUI 作为命令行工具使用,而是作为 Java 库并在代码中调用它。
JavaScriptCompressor 接受 Reader 后代(例如 InputFileReader)。
JavaScriptCompressor compressor = new JavaScriptCompressor(in, new YuiCompressorErrorReporter());
您实际上可以获取原始 JavaScript 并将其转换为 Stream,例如如何在 Java 中将字符串转换为输入流?
完整的集成示例如下:
http://blog.teamextension.com/yui-compressor-in-java-246
计划b)
请注意,您可以简单地将生成的 javascript 保存到文件系统中,然后从 Java 调用命令行 Yui。然后从文件系统中读取缩小的文件,就是这样,你就有了一个缩小的 JS。
您可以尝试JShaman JavaScript Obfuscator,它是一个很好的JavaScript混淆工具。它有一个Web API接口可以调用。您可以在 Java 中调用和混淆 JavaScript 代码。