11

背景

我正在致力于“现代化”一个预先存在的 PHP 驱动的网站。该网站最初是一个带有一些 php 方法的静态网站。它现在有一个移动网络应用程序、多个模型和大量动态内容。但是,随着时间的推移,应用程序本身的结构与主要是静态站点时并没有太大变化,所以现在到处都是包含文件,应用程序/呈现逻辑没有分离等等。从事于。因此,我正在重新组织一切并重新开发许多预先存在的功能,因为我们正在为即将到来的升级对不断增长的生态系统做准备。首先,我正在重新编码一切以适应 MVC 架构。虽然我确实使用 PHP,但我的大部分背景来自 Ruby 和 Node,因此我的问题是:

实际问题

我很喜欢 Rails 的 Asset Pipeline,并且看到我正在处理的当前站点(参见上面的背景)有大约 10 个不同的样式表和更多的 javascript 文件,我真的很想实现某种资产管理器当我将站点转换为 MVC 设置时。

我找到了 Assetic,这似乎很有趣,但我不太了解将它实现到模板系统中的最佳方法(我没有使用任何预构建的模板,例如 Twig,我能找到的任何参考材料都可以使用它)或者让它动态地为资产服务。

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

是否有任何应用程序实现了 Assetic(或 Pipe),或者我可以查看的不依赖现有模板引擎(例如 Twig)的另一个 Asset 打包器?

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

4

1 回答 1

9

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

使用模板系统,Twig 是最好的,因为就像 hakre 所说,它的实施非常强大。但是,将它集成到任何其他模板系统中并不难(我很快写了一个 Smarty 插件供个人使用,效果很好)。

Finaly Assetic 可以满足您的任何需求:

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

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

到目前为止,我在 Symfony 中使用 Assetic 时遇到的唯一问题是缺乏文档(在我的案例中使用了 CssRewriteFilter),但对源代码的良好理解通常有助于了解它应该如何工作。

于 2012-11-29T10:53:14.143 回答