YUIC压缩器或类似的PHP?

时间:2009-06-09 22:11:12

标签: javascript php yui-compressor

我一直在我的测试服务器上使用yuicompressor.jar来实时更改已更改的JavaScript文件。既然我已将网站部署到公共服务器,我注意到服务器的策略禁止使用exec()或其等价物,所以不再为我执行java。

用PHP实现了一个像样的动态JS压缩器吗?我能找到的唯一类似的东西是Minify,但它更像是一个带有缓存和一切的全面压缩解决方案。我想保持文件分离并使最小化文件遵循我自己的命名约定,因此Minify对于此目的来说有点过于复杂。

该工具与yuicompressor一样,应该能够使用文件名或JavaScript作为输入,并且应该写入文件或输出压缩的JavaScript。

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

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

3 个答案:

答案 0 :(得分:6)

是的,它被称为minify

在复杂性方面唯一需要担心的是设置一个,而且实际上并没有什么。如果您想在一个<script><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>

答案 1 :(得分: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的相同过程,如果您需要更多功能,只需从库中选择&amp;阅读来源,了解如何通过您的应用直接拨打电话。

我没有很好地阅读这个问题,因为minify基于使用jar文件,op无论如何都不能使用它的服务器配置

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

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

答案 2 :(得分:0)

尝试Lissa

  

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