art-template

简介: art-template

https://aui.github.io/art-template/zh-cn/docs

如果渲染模板的时候,传递过来的数据集中又user数据

那么在页面中显示h2标签,h2标签里面用户的名字

<script id="demo01" type="text/html">
        {{if user}}
        <h2>{{user.name}}</h2>
        {{/if}}
</script>
<script>
 <% if (user) { %>
            <h2><%= user.name %></h2>
        <% } %>
</script>

渲染页面(demo.art)

如果是art文件, 我们可以通过NodeJS引入模板,调用Art-template API 来实现 ,直接放入指定的标签

const template = require('art-template')
    //template(filename, content)  根据模板名渲染模板, 
         const html = template(__dirname + '/tpl-user.art', { 
            user: {
            name: 'aui'
            } 
        })

如果是html页面的script标签使用了art 模板 (demo.html)

我们可以在浏览器中实时编译

1. 引入文件

2. 调用template()方法
<script src="template-web.js"></script>
<script id="demo01" type="text/html">
        {{if user}}
        <h2>{{user.name}}</h2>
        {{/if}}
</script>
<script>
 //  template(模板id, data)  根据模板名渲染模板, 
 const html = template(demo01, {
     user: {
         name: 'zs'
     }
 })
document.getElementById('content').innerHTML = html
</script>

语法

(grammar.art)

原文输出

{{@ value }}

条件语句

{{if value}} ... {{/if}}
{{if v1}} ... {{else if v2}} ... {{/if}}

循环

{{each target}}
 {{$index}} {{$value}}
{{/each}}
  1. target 支持 arrayobject 的迭代,其默认值为 $data
  2. $value$index 可以自定义:{{each target val key}}

变量

{{set temp = admin}}

模板继承

(parent.art)(child.art)(header.art)

<!--parent.art文件里-->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{block 'title'}}My Site{{/block}}</title>
    {{block 'head'}}
    <link rel="stylesheet" href="main.css">
    {{/block}}
</head>
<body>
    {{block 'content'}}{{/block}}
</body>
</html>

{{extend ‘./parent.art’}} 继承骨架

子模版

将网站的公共部分(头部,底部)抽离到单独的文件中

{{include ‘./header.art’}}

过滤器

定义一个可以在模板中使用的函数

template.defaults.imports.dateFormat = function(date, format){/*[code..]*/};
template.defaults.imports.timestamp = function(value){return value * 1000};

调试

template.defaults.debug

art-template 内建调试器,能够捕获到语法与运行错误,并且支持自定义的语法。在 NodeJS 中调试模式会根据环境变量自动开启:process.env.NODE_ENV !== 'production'

设置 template.defaults.debug=true 后,等同于:

{
    "cache": false,
    "minimize": false,
    "compileDebug": true
}

模板变量

template.defaults.imports

模板通过 $imports 可以访问到模板外部的全局变量与导入的变量。

template.defaults.imports.log = console.log;
{{$imports.log('hello world')}}


相关文章
|
JavaScript 前端开发 安全
模板引擎(art-template)详解
它采用作用域预声明来优化模板渲染速度,从而获得来接近JavaScript极限的运行性能,并同时支持nodejs和浏览器 1.1.特性 模板引擎是第三方模块,让开发者以更友好的方式拼接字符串,是代码啊更清晰,更加易于维护 1.2. 模板 art-template同时支持两种语法,标准语法可以让模板更容易读写, 原始语法具有强大的逻辑处理能力
1182 0
|
5月前
|
前端开发
前端使用 <el-descriptions>标签报错: <el-descriptions> - did you register the component correctly
前端使用 <el-descriptions>标签报错: <el-descriptions> - did you register the component correctly
386 0
- Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <script>, as t
vue.js报错如下: - Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as , as they will not be parsed.
5658 1
|
JSON 数据格式 索引
小程序template-plump
组件数据绑定 【加精】使用 this.data 可以获取内部数据和属性值,修改它们应使用 setData  与普通的 WXML 模版类似,可以使用数据绑定,这样就可以向子组件的属性传递动态数据
1381 0
|
存储 C#
[UWP]了解模板化控件(4):TemplatePart
原文:[UWP]了解模板化控件(4):TemplatePart 1. TemplatePart TemplatePart(部件)是指ControlTemplate中的命名元素。控件逻辑预期这些部分存在于ControlTemplate中,并且使用protected DependencyObject GetTemplateChild(String childName)获取它们后进行操作。
1263 0
[UWP]了解模板化控件(5.1):TemplatePart vs. VisualState
原文:[UWP]了解模板化控件(5.1):TemplatePart vs. VisualState 1. TemplatePart vs. VisualState 在前面两篇文章中分别使用了TemplatePart及VisualState的方式实现了相同的功能,其中明显VisualState的方式更灵活一些。
939 0
|
JavaScript 前端开发 Ruby