php angular/think angular/php模版引擎
在thinphp5中发现一个好用的模版引擎—think-angular,
此模板引擎主要特点是 不需要额外的标签定义, 全部使用属性定义, 写好的模板文件在IDE格式化代码的时候很整洁, 因为套完的模板文件还是规范的html,
注: 一个标签上可以使用多个模板指令, 指令有前后顺序要求, 所以要注意指令的顺序,
项目地址:https://github.com/top-think/think-angular
文档地址:https://www.kancloud.cn/shuai/php-angular/127397
index.php
<?php
use think\angular\Angular;
require '../src/Angular.php'; // 配置
$config = [
'debug' => true, // 是否开启调试, 开启调试会实时生成缓存
'tpl_path' => './view/', // 模板根目录
'tpl_suffix' => '.html', // 模板的后缀
'tpl_cache_path' => './cache/', // 模板缓存目录
'tpl_cache_suffix' => '.php', // 模板缓存后缀
'directive_prefix' => 'php-', // 指令前缀
'directive_max' => 10000, // 指令的最大解析次数
]; // 实例化
$view = new Angular($config); // 数据
$data = array(
'title' => 'Hello PHP Angular',
'list' => array(
array('name' => 'name_1', 'email' => 'email_1@qq.com'),
array('name' => 'name_2', 'email' => 'email_2@qq.com'),
array('name' => 'name_3', 'email' => 'email_3@qq.com'),
array('name' => 'name_4', 'email' => 'email_4@qq.com'),
array('name' => 'name_5', 'email' => 'email_5@qq.com'),
),
); // 向模板引擎设置数据
$view->assign($data); // 输出解析结果
$view->display('index'); // 获取编译解析html结果
$html = $view->fetch('index'); // 获取模板编译后的php代码
$php = $view->compiler('index');
common/base.html
<!DOCTYPE html>
<html>
<head>
<title>base</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div php-include="common/head"></div>
<div php-block="left">这里是left, 会被替换</div>
<div php-block="main">这里是main, 会被替换</div>
</body>
</html>
common/head.html
<div>这里是head</div>
common/index.html
<div php-extends="common/base"></div>
<div php-block="left">
<div class="menu">
<ul php-function="echo_ul($list)">
<li php-foreach="$list as $cate"><a href="/category/{$cate.name}">{$cate.title}</a>
<ul php-if="isset($cate['_child'])" php-call="echo_ul($cate['_child'])"></ul>
</li>
</ul>
<ul php-call="echo_ul($list)"></ul>
</div>
</div>
<div php-block="main">
<div class="name" php-init="$name='shuai'">{$name}</div>
<div php-if="$is_download"><input type="button" onclick="down()"/></div>
<div php-switch="$status">
<span php-case="1"> 正常 </span>
<span php-default=""> 未知状态 </span>
</div>
<a php-for="$i = $page_start; $i <= $page_end; $i++" href="/article/lists?p={$i}">第{$i}页</a>
<tr php-foreach="$list as $article">
<td>{$article.title}</td>
<td>{:time_format($article['create_time'])}</td>
<td>
<a href="/article/detail?id={$article.id}">查看</a>
<a href="/article/del?id={$article.id}">删除</a>
</td>
</tr>
</div>
php angular/think angular/php模版引擎的更多相关文章
- 构建自己的PHP框架--构建模版引擎(1)
前段时间太忙,导致好久都没有更新博客了,今天抽出点时间来写一篇. 其实这个系列的博客很久没有更新了,之前想好好规划一下,再继续写,然后就放下了,今天再捡起来继续更新. 今天我们来说一下,如何构建自己的 ...
- Smarty模版引擎的原理
Smarty是一个使用php写出来的模版引擎,用来将原本与html代码混杂在一起PHP代码逻辑分离,实现前后端分离. Smarty模板优点: 1. 速度:采用Smarty编写的程序可以获得最大速度的提 ...
- js模版引擎handlebars.js实用教程——为什么选择Handlebars.js
返回目录 据小菜了解,对于java开发,涉及到页面展示时,比较主流的有两种解决方案: 1. struts2+vo+el表达式. 这种方式,重点不在于struts2,而是vo和el表达式,其基本思想是: ...
- 简单JavaScript模版引擎优化
在上篇博客最简单的JavaScript模板引擎 说了一下一个最简单的JavaScript模版引擎的原理与实现,作出了一个简陋的版本,今天优化一下,使之能够胜任日常拼接html工作,先把上次写的模版函数 ...
- Symfony2模版引擎使用说明手册
一.基本使用 {{ demo }}输出一个demo变量; {% func %}通常是包含一个twig函数例如 for; 举个for循环的例子: {% for i in 0..10 %} <em& ...
- Asp.net NVelocity 模版引擎
NVelocity.dll是Java中常用的一个模版,下面是常用的模版引擎 1,返回string类型的html代码 /// <summary> /// 获取html模版 /// </ ...
- PHP模版引擎 – Twig
在网站开发过程中模版引擎是必不可少的,PHP中用的最多的当属Smarty了.目前公司系统也是用的Smarty,如果要新增一个页面只需把网站的头.尾和左侧公共部分通过Smarty的include方式引入 ...
- Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs
目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set(name,value) app.use ...
- T4教程1 T4模版引擎之基础入门
T4模版引擎之基础入门 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看 ...
随机推荐
- 怎样删除Tomcat下已经部署的项目
lz说的是把web项目部署到tomcat之中,要把它删除..很简单,找到webapps文件(tomcat的根目录)下把它删除即可.. 2.Tomcat 6.0\webapps\项目名 只要在把这个目录 ...
- ASPNET Core 部署 Linux — 使用 Jexus Web Server
第一步 安装.Net Core环境 安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core. 选择对应的系统版本进行安装.安装完成过后 输入命令查看 ...
- 手把手教你开发Chrome扩展二:为html添加行为
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 上一节我们 ...
- 【Web API系列教程】1.1 — ASP.NET Web API入门
前言 HTTP不仅仅服务于web页面.同一时候也是构建暴露服务和数据的API的强大平台.HTTP有着简单.灵活和无处不在的特点.你能想到的差点儿全部平台都包括有一个HTTP库.所以HTTP服务能够遍及 ...
- 实战c++中的vector系列--emplace_back造成的引用失效
上篇将了对于struct或是class为何emplace_back要优越于push_back,可是另一些细节没有提及.今天就谈一谈emplace_back造成的引用失效. 直接撸代码了: #inclu ...
- 集成环信时遇到的问题file not found: libEaseMobClientSDK.a
集成环信时遇到的问题 build setting环信SDK集成libEaseMobClientSDKL file not found: libEaseMobClientSDK.a clang: er ...
- 使用adb在电脑和手机间传文件
首先须要root手机. 然后,"Win + R",打开cmd窗体.以下以copy d:\1.txt到/system/文件夹为例说明. adb push source(localpa ...
- Restful WebService简介
RESTful Web Services已经渐渐開始流行, 主要是用于解决异构系统之间的通信问题.非常多站点和应用提供的API,都是基于RESTful风格的Web Services,比較就有Googl ...
- STL 之 list源码自行实现(iterator)
(0)文件夹 STL 之 vector源码实现(云算法<< [] = 重载, new delete,throw catch) STLc++中string类的源码 堆(stack) 之 c ...
- office文档、图片、音/视频格式转换工具
1.音频/视屏转换工具VLC https://wiki.videolan.org/Mp3/#Container_formats http://wenku.baidu.com/view/ba73ac5 ...