PHP的资产管道/框架

Con*_*ham 11 php pipeline assets

背景

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

实际问题

我非常喜欢Rails的资产管道,看到我正在研究的当前网站(见上面的背景)有大约10种不同的样式表和更多的javascript文件,我真的很想实现某种资产管理器当我将网站转换为MVC设置时.

我发现了Assetic,它似乎相当有趣,但我不太了解将它实现到模板系统的最佳方法(我没有使用任何预先构建的模板,如Twig,我可以找到任何参考资料)或者让它动态地提供资产.

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

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

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

小智 8

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

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

Finaly Assetic可为您提供所需:

  • 结合JS/CSS:使用AssetCollection类完成(在此处显示)
  • Minify:在这里你将使用Assetic提供的过滤器:CssMin,JsMin,JsMin +,Google Closure Compiler,你已经有了选择.甚至还有用于图像优化的图像拟合器(主要是质量无损缩小)
  • 缓存:Assetic有一个缓存系统,因此您不必通过yourslef创建一个缓存系统.

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

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