在 php 中组合和压缩多个 JavaScript 文件

Combining and Compressing multiple JavaScript files in php

提问人:superUntitled 提问时间:5/15/2009 最后编辑:hughdbrownsuperUntitled 更新时间:2/22/2013 访问量:27656

问:

我正在开发一个需要八个 javascript 文件(hello web2.0)的 PHP 应用程序。

我想知道动态组合和压缩所有文件的最佳方法是什么。 我对问题的措辞是否正确?

最终结果是,我会在标头中包含一个 .js 文件,而该 .js 文件将包含我的“includes/js”目录中的 .js 文件。

谢谢。

php javascript jquery jscompress

评论

3赞 Ben 5/14/2012
这个问题有2012年的答案吗?

答:

7赞 Parrots 5/15/2009 #1

我已经在我的jQuery / PHP项目中使用了Minify,并取得了很大的成功。它还包括缓存,因此没有太多开销。

我最终改变了事情,并使用 .htaccess 将对我的 javascript 文件夹的所有请求路由到缩小脚本,例如:

<script type="text/javascript" src="/js/jquery.js,js/jquery-levitip.js,js/jquery-facebox.js,js/datepicker.js,js/ga.js"></script>

我的前端 HTML 路由到我的缩小脚本中,它将所有这些脚本作为一个压缩和缩小的脚本返回。这样我就可以正常定义包含,一切都发生在幕后。

但无论如何,请查看他们网站上的用户指南,它有很好的文档记录,您也应该能够按照自己想要的方式完成工作。哦,它也适用于 CSS。

评论

0赞 Michal - wereda-net 6/14/2014
我的缩小缓存文件夹总是空的,所以我不确定缓存是否正常工作
15赞 pgb 5/15/2009 #2

你可以使用 jsmin-php

他们的示例代码是:

require 'jsmin-1.1.1.php';

// Output a minified version of example.js.
echo JSMin::minify(file_get_contents('example.js'));

您可以通过执行以下操作轻松加入多个 js 文件:

require 'jsmin-1.1.1.php';

// Output a minified version of example.js.
echo JSMin::minify(file_get_contents('example.js') . file_get_contents('example2.js'));

评论

1赞 superUntitled 5/16/2009
你会推荐这个而不是使用 Minify 吗?
0赞 pgb 5/16/2009
两者都使用 jsmin 来压缩 Javascript 文件。也许你应该用两个库压缩你的js文件并决定。不过,Minify 的缓存功能似乎不错。
0赞 Deebster 3/10/2012
它似乎没有得到维护,有一些悬而未决的问题
2赞 Michael J. Calkins 6/8/2013
这个答案有 2013 年版本吗?
2赞 TheHippo 5/15/2009 #3

您可以使用 Yahoo JavaScript Compressor,这是一个命令行工具,您可以从 PHP 脚本开始。

0赞 Steve C 1/23/2013 #4

您可以尝试 PHP Speedy这会将您的 JS 文件合并并压缩为 1 个文件。它还将压缩您的 HTML 和 CSS,您的页面加载速度会快得多。

-2赞 user956584 2/22/2013 #5
 function compress($buffer) {
        /* remove comments */
        $buffer = preg_replace("/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/", "", $buffer);
        /* remove tabs, spaces, newlines, etc. */
        $buffer = str_replace(array("\r\n","\r","\t","\n",'  ','    ','     '), '', $buffer);
        /* remove other spaces before/after ) */
        $buffer = preg_replace(array('(( )+\))','(\)( )+)'), ')', $buffer);
        return $buffer;
    }

来源:http://castlesblog.com/2010/august/14/php-javascript-css-minification