首頁  >  文章  >  後端開發  >  使用 Symfony Asset 组件管理你的 CSS Javascript 和图片文件

使用 Symfony Asset 组件管理你的 CSS Javascript 和图片文件

WBOY
WBOY原創
2016-06-23 13:01:121058瀏覽

之所以想介绍 Symfony Asset 组件,是因为我估计这个组件是 Symfony 组件包里可能最容易被轻视的组件之一了。我之前就从来没有正眼看过相关的文档,也从来没用过相关功能,直到最近公司网站要做 CDN 加速的时候,才想起来有这么一个东西。

可能很多学习 Symfony 的同学或多或少都在 Symfony 官方最佳实践教程里看到过 asset这个 twig 函数,但文档并没有解释 asset是做什么的,能带来什么样的好处。我最近仔细阅读了 Asset 组件的文档,并做了相关实践,把一些有用的信息分享一下。

Asset 是什么东东?

其实就是 css / javascript / 图片 这类静态文件的统称啦。

Asset 管理维护会遇到的常见问题

过去静态文件的路径都是写死在模板文件里的,比如官网提供的例子:

<linkrel="stylesheet" type="text/css" href="/css/main.css"> <!-- ... --> <ahref="/"><img src="/images/logo.png" alt="使用 Symfony Asset 组件管理你的 CSS Javascript 和图片文件" ></a>

除非真的是一个相当相当简单的项目你可以这么写,你最好不要把这些路径写死,因为你会给你自己挖以下几个坑儿:

  1. 你要不断得在每一个引用静态文件的地方写全路径。
  2. 版本管理麻烦。你可能想要缓存你的静态文件,而缓存静态文件需要通过在 URL 地址后面添加版本号(一般来说类似于 /main.css?v=1的方式)来控制缓存是否要更新,但如果你的路径都是在各个文件里写死的……那你就一个一个慢慢改吧,还容易漏。
  3. 项目刚开始静态文件路径写死一时爽,万一静态文件目录的路径变了你就傻叉了,又一个一个慢慢改吧。
  4. 有一种技术叫做多 CDN,用来减轻单 CDN 的压力。假如文件 main.css做了两个 CDN http://cdn1.com/main.css和 http://cdn2.com/main.css,如果路径是写死的,你如何做到让页面随机返回这两个 CDN 地址中的其中一个?

那 Symfony Asset 组件能干啥?

正好对应于上面的几个问题:

  1. 有了它,你不用再把路径写全了,而是可以把公用的目录部分省略掉
  2. 有了它,指定静态文件版本方便了,就一个配置的事儿!
  3. 有了它,移动静态文件的位置方便了,换目录换域名换 CDN,随便换!
  4. 有了它,实现多 CDN 不是梦!

今天我先写到这儿吧。如果大家是从非我个人网站(http://chrisyue.com)看到的转载,请点原文看看后续有没有完成。

Symfony Asset 组件这么棒,怎么用呢?

我用的是 Symfony 框架,那在框架里该如何使用 Symfony Asset 组件呢?

弱弱的多问一句:Symfony Assetic 组件又是什么鬼,跟 Asset 组件有什么关系吗?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn