8

我一直在我的测试服务器上使用 yuicompressor.jar 来动态最小化更改的 JavaScript 文件。现在我已经将网站部署到公共服务器上,我注意到服务器的策略禁止使用 exec() 或其等价物,因此我不再需要执行 java。

有没有用 PHP 实现的体面的即时 JS 压缩器?我能找到的唯一类似的东西是 Minify,但它更像是一个成熟的压缩解决方案,带有缓存和一切。我想将文件分开,并让最小化的文件遵循我自己的命名约定,所以 Minify 对于这个目的来说有点太复杂了。

该工具,如 yuicompressor,应该能够将文件名或 JavaScript 作为输入,并且应该写入文件或输出压缩的 JavaScript。

编辑:为了澄清,我正在寻找不必作为独立使用的东西(即它可以从函数调用,而不是嗅探我的 GET 变量)。如果我只是想要一个压缩器,Minify 显然是一个不错的选择。

EDIT2:自从我问这个问题以来的五年里发生了很多变化。今天,我强烈建议将前端工作流程与服务器代码分开。有很多用于 JS 开发的好工具,除了最微不足道的 jQuery 增强功能之外,最好有一个完整的工作流程,包括自动捆绑、测试和 linting,并且只部署缩小的捆绑包而不是原始文件。

4

3 回答 3

6

是的,它被称为minify

在复杂性方面唯一需要担心的是建立一个group,这真的没什么。<script>如果您想在一个or<link>语句中使用多个 JS/CSS,请编辑 groupsConfig.php 文件:

return array(
     'js-common' => array('//js/jquery/jquery-1.3.2.min.js', '//js/common.js', '//js/visuals.js',
'//js/jquery/facebox.js'),
     'css-common' => array('//css/main.css', '//css/layout.css','//css/facebox.css')
);

要包含上述 'js-common' 组,请执行以下操作:

<script type="text/javascript" src="/min/g=js-common"></script>
于 2009-06-09T22:18:10.903 回答
3

(我知道我正在寻找完全相同的东西,但不知道如何使用 php 直接处理 jar 文件 - 这就是我最终来到这里的方式,所以我分享了我发现的东西)

Minify 是一个拥有大量功能的大型库。然而,缩小部分是一个非常小的类:http ://code.google.com/p/minify/source/browse/trunk/min/lib/Minify/YUICompressor.php

&非常非常容易使用:

//set the path to the jar file
Minify_YUIcompressor::$jarFile=_ROOT.'libs/java/yuicompressor.jar';
//set the path to a writable temp folder
Minify_YUIcompressor::$tempDir=_ROOT.'temp/';

//minify
$yourcssminified=Minify_YUIcompressor::minifyCss($yourcssstringnotminified,$youroptions)

js 的相同过程,如果您需要更多功能,只需从库中选择并阅读源代码以了解如何从您的应用程序直接调用。

我没有很好地阅读这个问题,因为 minify 是基于使用 jar 文件的,所以 op 不能在他的服务器配置中使用它

Minify 还包括 yui 以外的其他缩小方法,例如:

http://code.google.com/p/minify/source/browse/trunk/min/lib/JSMinPlus.php?r=443&spec=svn468

于 2011-11-23T12:23:58.883 回答
0

试试丽莎

Lissa 是一个通用的 CSS 和 JavaScript 加载工具。Lissa 是 YUI PHP 加载器的扩展,旨在解决当前加载器的限制之一;组合加载。YUI PHP 加载器附带一个组合加载器,它能够通过将所有 YUI JavaScript 和/或 CSS 要求输出为每个资源类型的单个请求来减少 HTTP 请求并提高性能。这意味着即使您需要 8 个 YUI 组件,最终归结为 13 个文件,您仍然只会发出 2 个 HTTP 请求;一个用于 CSS,另一个用于 JavaScript。这很好,但是自定义非 YUI 资源呢。YUI PHP Loader 将加载它们,但它将它们作为单独的包含加载,因此它们错过了组合服务的好处,并且页面的 HTTP 请求数量增加了。

于 2009-11-29T08:19:53.270 回答