如何使用Java在运行时缩小不同的javascript文件

如何使用Java在运行时缩小不同的javascript文件,java,javascript,filter,compression,minify,Java,Javascript,Filter,Compression,Minify,我正在尝试构建(或找到一个我可以使用的现有过滤器)一个web过滤器,它将在运行时压缩JavaScript文件。我曾尝试基于YUICompressor构建一个,但当我尝试将基于字符串的源代码而不是实际的文件传递给它时,我从中得到了奇怪的错误 现在,我期望得到像“实时压缩/缩小是个坏主意”这样的响应,但我不想在构建时这样做是有原因的 我有一个JavaScript web应用程序,它可以延迟加载JavaScript。它将只加载它实际需要的内容。JavaScript文件可以指定依赖项,我已经有了一个过滤

我正在尝试构建(或找到一个我可以使用的现有过滤器)一个web过滤器,它将在运行时压缩JavaScript文件。我曾尝试基于YUICompressor构建一个,但当我尝试将基于字符串的源代码而不是实际的文件传递给它时,我从中得到了奇怪的错误

现在,我期望得到像“实时压缩/缩小是个坏主意”这样的响应,但我不想在构建时这样做是有原因的

我有一个JavaScript web应用程序,它可以延迟加载JavaScript。它将只加载它实际需要的内容。JavaScript文件可以指定依赖项,我已经有了一个过滤器,它将连接请求的文件和尚未加载到单个响应中的任何依赖项。这意味着JavaScript中有大量不同的组合将发送给用户,这使得在构建时尝试构建所有捆绑包变得不切实际

所以我要重申一下。理想情况下,我正在寻找一个现有的实时javascript过滤器,我可以直接插入我的应用程序

如果一个不存在,我正在寻找关于我可以用作构建块的技巧。YUICompressor并没有让我完全明白这一点,谷歌闭包似乎只是一个web API

干杯, 彼得

我已经有一个过滤器可以 连接请求的文件和 尚未加载的任何依赖项 变成一个单一的反应

苏欧。。为什么不在加载/连接它们之前缩小它们

(是的,动态压缩非常昂贵,而且绝对不值得为提供的每个.js文件进行压缩)

看看Douglas Crockford的文章。来源在这里:。它不是过滤器,只包含要缩小的代码。我们把它做成了一个过滤器,在那里我们可以动态地组合和缩小JavaScript。它工作得很好,尤其是当您有浏览器和CDN缓存结果时


更新:我遗漏了我们也在服务器上缓存它们。只有在组合和缩小输出所需的任何资产发生变化时,才会重新生成它们。基本上,我们不是在构建时“编译”它们,而是在运行时处理每个组合一次。

您所说的有一定的逻辑。我非常喜欢能够轻松调试发布代码的想法。我可以通过将压缩文件和未压缩文件并排来实现这一点。回到2.3.6,它马上就开始工作了……为什么不先压缩每个js,然后在运行时压缩您需要的js呢?这样做是完全可能的,并且可以使用YUICompressor。Demian和WaiLim正确地指出,在我连接之前缩小将完成这项工作。我只是脑子里想不起来。我将在构建时进行压缩。仅供参考——Closure还有一个JavaAPI。实际上它是用Java编写的。这可以帮助您从十几个压缩器中进行选择,并简化资源管理方式。Demian的做法有些道理。我正在努力为尝试实时做这件事寻找理由。为什么选择这样做而不是在构建时压缩?我更新了关于如何在服务器端缓存的说明。我们只在需要时动态生成它们,而不是担心这是一个构建步骤。在许多情况下,只在构建时进行是有意义的,因为其他许多复杂性,我们的方法更容易实现。您确实要求在Java运行时使用缩小解决方案,我只是说它可以工作:)JSMin只规范化空白,实际上它并没有做更多的工作,比如用短符号替换长符号等等。