PHP的资产管道/框架

时间:2012-06-28 23:28:26

标签: php pipeline assets

背景

我正致力于“现代化”已有的PHP驱动网站。这个网站最初是一个静态网站,有几个php方法。它现在有一个移动网络应用程序,多个模型和大量动态内容。然而,超时的应用程序本身的结构并没有太大变化,因为它是一个很大程度上静态的站点,所以现在遍布包含文件,没有应用程序/表示逻辑的分离等等。这是一个烂摊子从事于。因此,当我们准备即将升级到不断增长的生态系统时,我正在重新组织所有内容并重新开发许多预先存在的功能。首先,我正在重新编码每个标志以适应MVC架构。虽然我使用PHP,但我的大部分背景都来自Ruby和Node,因此我的问题是:

实际问题

我非常喜欢Rails的Asset Pipeline,并且看到我正在处理的当前网站(见上面的背景)有大约10种不同的样式表和更多的javascript文件,我真的想实现某种排序我将资源经理转换为MVC设置。

我发现Assetic,这看起来很有趣,但我不太明白将它实现到模板系统的最佳方法(我没有使用任何预先构建的模板,如Twig,其中任何我可以找到的参考资料利用)或让它动态地提供资产。

我还发现了一个名为Pipe的东西:https://github.com/CHH/pipe,它看起来像一个非常接近的Sprockets端口,但我无法正常运行。

是否有任何应用程序实现Assetic(或Pipe),或者其他不依赖于现有模板引擎的资产打包程序,例如Twig,我可以看一下?

真的,我正在寻找能够缩小/组合多个JS和CSS文件,然后缓存它们的东西。

1 个答案:

答案 0 :(得分:8)

Liek hakre说,Assetic开箱即用。你不需要任何模板系统(Twig,Smarty ......)。

使用模板系统,Twig是最好的,因为像hakre所说,它是强有力的实施。然而,将它集成到任何其他模板系统并不是那么困难(我很快写了一个Smarty插件供个人使用,它运行良好)。

Finaly Assetic可以做任何你需要的事情:

  • 组合JS / CSS:使用AssetCollection类(has show here
  • 完成
  • 缩小:在这里你将使用filters资产提供:CssMin,JsMin,JsMin +,谷歌闭包编译器,你有选择。甚至还有用于图像优化的图像拟合器(主要是质量无损大小减小)
  • 缓存:Assetic有一个cache system,因此您无需通过yourslef创建一个。

Assetic的最后一个优点是,它是Symfony2默认使用的,它是最近的PHP框架之一imo,因此它证明了Assetic是一个不错的选择。

到目前为止,我只使用Assetic从Symfony出来的问题是缺少文档(在我的情况下使用CssRewriteFilter)但是对源代码的良好理解通常有助于了解它应该如何工作。