# art-template
* * * * *
#### 分为原生语法和简洁语法,本文主要是讲简洁语法
* 基础数据渲染
* 输出HTML
* 流程控制
* 遍历
* 调用自定义函数方法
* 子模板引入
#### 基础数据渲染
一、引入art-template.js文件
~~~
<script src="template.js"></script>
~~~
二、编写HTML模板
~~~
<script id="test" type="text/html">
<h1>{{title}}</h1>
</script>
~~~
三、向模板插入数据,并输出到页面
~~~
var data = {
title:"hello world"
};
var html = template("test",data);
document.getElementById('content').innerHTML = html;
~~~
输出HTML
~~~
<script id="test" type="text/html">
<h1>{{title}}</h1>
</script>
~~~
//注意:{{title}}这是对内容编码输出,应该写成{{#title}}这是对内容不编码输出
~~~
<script id="test" type="text/html">
<h1>{{#title}}</h1>
</script>
var data = {
title:"<p>hello world</p>"
};
var html = template("test",data);
document.getElementById('content').innerHTML = html;
~~~
#### 流程控制语句(if else)
~~~
{{if value}}
...
{{else if value}}
...
{{else}}
...
{{/if}}
~~~
art-template里面的流程控制就相对其他模板来说强大很多了,直接看例子吧
~~~
<script id="test" type="text/html">
<div>
{{if bok==22}}
<h1>线上</h1>
{{else if bok==33}}
<h2>隐藏</h2>
{{else}}
<h3>走这里</h3>
{{/if}}
</div>
</script>
<script>
var data = {
"bok":22
};
var html = template('test',data);
document.getElementById("app").innerHTML = html;
</script>
~~~
嵌套的写法
~~~
<script id="test" type="text/html">
<div>
{{if bok}}
{{if list.length>=0}}
{{each list}}
<p>{{$index}}:{{$value}}</p>
{{/each}}
{{else}}
<p>没有数据</p>
{{/if}}
{{/if}}
</div>
</script>
<script>
var data = {
"bok":true,
list:["a","b","c"]
};
var html = template('test',data);
document.getElementById("app").innerHTML = html;
</script>
~~~
#### 循环遍历语句
~~~
{{each name}}
索引:{{$index}}
值:{{$value}}
{{/each}}
~~~
~~~
<script id="test" type="text/html">
<div>
<ul>
{{if c==100}}
<ul>
{{each person}}
<li>
编号:{{$index+1}}--姓名:{{$value.name}}--年龄:{{$value.age}}
</li>
{{/each}}
</ul>
{{/if}}
</ul>
</div>
</script>
<script>
var data = {
c:100,
person:[
{name:"jack",age:18},
{name:"tom",age:19},
{name:"jerry",age:20},
{name:"kid",age:21},
{name:"jade",age:22}
]
};
var html = template("test",data);
document.getElementById("content").innerHTML = html;
</script>
~~~
#### 调用自定义方法
通过template.helper(name,fnCallBack)注册方法
可以直接在{{}}中调用
~~~
<script id="test" type="text/html">
<div>
{{if c==100}}
<ul>
{{each person}}
<li>姓名:{{$value.name}}--性别:{{show($value.sex)}}</li>
{{/each}}
</ul>
{{/if}}
</div>
</script>
<script>
var data = {
c:100,
person:[
{name:"jack",age:18,sex:1},
{name:"tom",age:19,sex:0},
{name:"jerry",age:20,sex:0},
{name:"kid",age:21,sex:1},
{name:"jade",age:22,sex:0}
]
};
//自定义函数
template.helper("show",function(sex){
console.log(sex);//同样可以打印日志到控制台
if(sex==0){
return "男"
}else if(sex==1){
return "女"
}
});
var html = template("test",data);
document.getElementById("app").innerHTML = html;
</script>
~~~
#### 调用子模板
{{include 'main'}} 引入子模板,数据默认为共享
{{include 'main' a}} a为制定数据,但是同样必须是父级数据,可以看看下面的例子,如果不注入的a的话,引入的子模板是接受不到数据的
~~~
<body>
<div id="app"></div>
<script src="template-debug.js"></script>
<script id="main" type="text/html">
<ul>
{{each list}}
<li>{{$value}}</li>
{{/each}}
</ul>
</script>
<script id="test" type="text/html">
<div>
<ul>
{{each person}}
<li>{{$value.name}}</li>
{{/each}}
</ul>
{{include 'main' a}}
</div>
</script>
<script>
var data = {
person:[
{name:"jack",age:18},
{name:"tom",age:19},
{name:"jerry",age:20},
{name:"kid",age:21},
{name:"jade",age:22}
],
a:{
list:['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']
}
};
var html = template("test",data);
document.getElementById("app").innerHTML=html;
</script>
</body>
~~~
- 序言
- vue
- 路由重复报错解决
- video.js
- 检查npm的依赖包是否有比较新的版本
- C:\Program Files\Git\cmd\git.EXE ls-remote -h -t https://github.com/nhn/raphael.git
- centos安装npm
- Zend Framework
- http请求
- 上传一张图片
- Ajax请求代码模板(服务器)
- 头部信息组合
- 分页
- 获取当前请求
- 页面异常处理
- 通过limit计算分页
- 链接数据库
- zend_cache缓存
- Zend_Registry
- php.ini include_path
- php
- 字符串 数组 互转
- 获取当前域名
- header输出编码为utf8
- 判断是否包含特定字符串
- 各种日期
- 数组转XML
- 数组重新排序
- Bootstrap
- 查询html及js
- 模态框模板
- 面板
- 操作
- Linux
- 常用命令
- vi编辑器常用命令
- wdcp
- centos7没有安装ifconfig命令的解决方法
- SVN
- 定时任务
- Nginx下http和https访问
- 遍历查看各目录文件数
- shell脚本自动备份数据库
- 清空log日志
- 删除n天前的文件
- 解决服务器环境2个PHP版本不统一问题 php -v和phpinfo不同版本
- 安装swoole扩展
- 如何查看服务器当前的并发访问量
- centos 安装pecl
- 挂载云盘
- 更换ca证书
- 查看显卡型号
- 支付相关
- 微信支付
- 扫码支付后不同步回调解决
- 回调函数处注意
- 支付宝支付
- 银联支付
- 微信公众号
- 接入URL示例代码
- 安卓内置浏览器清除缓存
- 获取微信公众号二维码图片
- ThinkPHP 5.0
- 各种学习文档
- jQuery
- 复选框全选
- 输入框限制数字和小数点
- Ajax
- $.post
- 省市县联动
- 前端模板引擎
- CSS
- 盒子布局
- 非固定宽度高度水平垂直居中
- 隐藏滚动条
- Zend Studio
- 添加svn插件
- 查找某字符串出现位置
- 方法引用位置
- aptana
- 插件
- js提示插件
- 验证码
- SQL
- 语句
- 查看MySQL数据库大小
- 查看正在执行sql
- 查询重复数据
- H5
- 生成安卓打包证书
- 个人使用模板
- layer上传图片
- 其他
- win10 找不到网络其他计算机
- 查看局域网内计算机名称及IP
- 查看WIFI的BSSID
- MSI afterburner启动RivaTuner Statistics Server报错
- git
- 在Linux中配置ssh密钥,在Git中使用SSH协议访问Gitee
- git操作流程
- 文件加入gitignore后不生效
- 强制覆盖拉取
- 更换远程仓库
- nginx
- 同一域名配置多站点
- 遇到问题解决方案
- 取消受保护文件隐藏属性
