我正在努力将Assetic集成到我正在构建的应用程序中。该应用程序遵循MVC模式,但不使用任何框架。 Twig用于模板化。
我已阅读文档并查看了一些helpful blog posts。
应用程序的结构如下:
渲染树枝模板然后由应用程序返回,因此非常简单。 js
文件夹下的css
和application
文件夹将保存原始javascript和css文件。
我的计划是将合并和缩小的js和css文件存储在public_html文件夹下的js
和css
文件夹中。
由于我不打算使用资产来优化任何图片,因此它们会直接放在images
下面的public_html
文件夹中。
现在的问题是:
据我所知,通过使用twig中的assetic,可以将合并和缩小的资源导出到我的public_html目录:
{% stylesheets '/path/to/sass/main.sass' filter='sass,?yui_css' output='css/all.css' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
在这种情况下,每次呈现模板时都会重新生成css/all.css
文件吗?
为了使应用程序可移植(可以使用虚拟主机托管,或者甚至可以在文件夹中托管)并确保在具有http://site.com/controller/action
等路由URL的站点中工作,无论如何都要提供资产将图片的网址“重写”为绝对网址(即images/a.jpg
到http://mysite.com/images/a.jpg
)?
使用嵌套模板时资产是否有效?
parent.twig:
<!DOCTYPE html>
<html>
<head>
{% block head %}
<link rel="stylesheet" href="mainstyle.css" />
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
</head>
<body>
</body>
</html>
child.twig:
{% extends "parent.twig" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ parent() }}
<link rel="stylesheet" href="childstyle.css" />
{% endblock %}
在这种情况下,我如何让资产者知道它应该合并childstyle.css
和mainstyle.css
并将其作为1个文件提供?