Mat*_*iva 28 php templates template-engine
我只使用PHP开发我的Web应用程序用于视图文件,我不觉得有任何限制,但我听说有一致的开发人员提倡"外部"模板引擎.那么模板引擎提供的简单PHP缺乏什么呢?
我正在寻找实用的东西,所以我排除了以下内容:
<?php echo $stuff; ?>使用花括号进行映射,使用花括号不会有任何区别)The*_*per 22
有些人不会同意,但是因为我一直在使用Twig,"for ... else"感觉很对.它可能不是很多,但它使我的模板更清洁一点.
{% for row in articles %}
Display articles ...
{% else %}
No articles.
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
您可以让模板引擎自动转义任何输出.这很棒,因为你不再需要重复htmlspecialchars ......无处不在.Twig做得很好.
{% autoescape on %}
Everything will be automatically escaped in this block
{% endautoescape %}
Run Code Online (Sandbox Code Playgroud)
我喜欢的另一个功能是扩展基本模板的能力.这是一个基本的例子
base.html模板
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
{% block head %}
<link rel="stylesheet" href="style.css" />
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
</head>
<body>
<div id="content">{% block content %}{% endblock %}</div>
<div id="footer">
{% block footer %}
© Copyright 2009 by <a href="http://domain.invalid/">you</a>.
{% endblock %}
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
child.html模板
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{% parent %}
<style type="text/css">
.important { color: #336699; }
</style>
{% endblock %}
{% block content %}
<h1>Index</h1>
<p class="important">
Welcome on my awesome homepage.
</p>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
子模板可以覆盖页面特定样式,内容等的块...您还可以注意到使用{%parent%}来抓取父项内容,这样您就不会在覆盖时丢失所有内容.
我建议你给Twig一个去.非常有用.
Dom*_*ger 10
关注点分离.
当使用MVC/MTV方法时,这类事情是标准的 - 数据的呈现必须与数据的显示分开,但如果您使用的是普通的PHP,则不然.
使用模板引擎可以轻松地将显示的内容与显示方式分开.
我想你可能会认为这属于"照顾坏开发者",因为一个优秀的开发者无论如何都应该这样做,但在我看来,模板引擎也让优秀的开发人员更容易.
轻松切换视图
根据网络的当前状态,我需要以不同的格式提供我的信息:
这些格式的信息可以相同,只有视图不同.使用某种模板引擎,我可以在这些视图之间快速切换.
| 归档时间: |
|
| 查看次数: |
7421 次 |
| 最近记录: |