什么在Symfony中使用Assets vs Assetics?

时间:2016-03-22 20:28:43

标签: symfony assets assetic

我对Symfony有点新鲜,而且我不知道如何使用静态文件管理。我读过有关Assets组件和Assetics包的内容。

我知道Assets只包含文件,而Assetics更聪明,因为它可以组合文件和压缩图像。但我已经使用指南针来缩小和组合css文件,因此不需要Assetics。

版本控制使静态文件的url通过浏览器缓存更改为由两者完成。

资产已从2.8或更高版本中删除,这是否意味着它不再是最佳做法?

我需要在三个地方生成网址:

  • Twig - >
  • 很容易做到
  • 控制器 - >找到了一种使用Assets执行此操作的方法
  • 在css文件中 - >相信这两者都不可能

在我的情况下,Wat是最好用的,有什么建议吗?

3 个答案:

答案 0 :(得分:1)

Assetic可以被视为一种轻松应用过滤器和编译资产的方法。资产组件基本上用于管理URL生成。正如你所说,两者都很好地通过扩展和控制器通过服务集成在Twig中。

我们的应用程序也使用指南针,但Assetic确保编译在恰当的时刻发生,而不需要命令行compass watch

认为您的大多数问题都已得到解答:

http://symfony.com/doc/current/cookbook/assetic/asset_management.html

http://symfony.com/doc/current/components/asset/introduction.html

答案 1 :(得分:0)

我一直在使用RjFrontendBundle来运行前端CSS / JS构建,并且还将其他静态内容从Bower / NPM /本地源复制到位。它为Assets组件提供了VersionStrategyInterface,该组件创建并在生产中使用唯一的文件名(通过GulpJS rev-all包重命名带有嵌入式哈希的文件)。在dev中,它使用普通文件名。

在CSS文件中,您仍然可以通过url()函数引用CSS / JS,管道将在dev和live中适当地重命名它们。

GulpJS构建工具用于缩小和准备普通文件。它附带一个setup控制台命令来构建初始gulpfile.js,还可以观察和重建文件,更新浏览器时更新浏览器,这有助于前端开发工作流程。

答案 2 :(得分:0)

趋势是使用独立的前端工具,例如gulp / grunt / sass而不是资产。原因(可能)如下:

  • gulp / grunt独立于框架,无论底层框架用于后端,都为前端人员提供相同的工作流程。
  • assetic与大多数现代工具的工作流程不同。它假定您将在模板中编写脚本/ css包含。从资产迁移到gulp可能是大项目的痛苦。
  • 随着项目的增长,资产可能会变得缓慢......当发生这种情况时,您将停止从控制器中提取资产并开始以gulp或grunt的方式生成它们。在这种情况下,gulp和grunt只是更好的工具。
  • assetic缺少一些重要功能,例如将处理后的资产包含在HTML代码中(内联)。由于资产的运作方式(树枝标签),可能很难克服这一点。

至于生成URL:资产只是文件系统中的文件。编写函数或树枝扩展名以生成这些文件的URL。