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同时支持两种语法,标准语法可以让模板更容易读写, 原始语法具有强大的逻辑处理能力
1150 0
|
JSON 数据格式
ES Search Template(下)
ES Search Template
60 0
|
3月前
|
XML 安全 JavaScript
goctl 技术系列 - text/template 深入讲解
goctl 技术系列 - text/template 深入讲解
|
4月前
|
前端开发
前端使用 <el-descriptions>标签报错: <el-descriptions> - did you register the component correctly
前端使用 <el-descriptions>标签报错: <el-descriptions> - did you register the component correctly
311 0
|
JSON API 数据格式
ES Search Template(上)
ES Search Template
65 0
|
JavaScript
Vue中遇到的Bug( Component name “School“ should always be multi-word vue/multi-word-component-names)
Vue中遇到的Bug( Component name “School“ should always be multi-word vue/multi-word-component-names)
122 0
|
存储 编译器 C++
【C++模板】——template
【C++模板】——template
|
数据库
yii2.0的Class yii\widgets\LinkPager是干什么的?底层原理是什么?
yii2.0的Class yii\widgets\LinkPager是干什么的?底层原理是什么?
157 0
express学习11-express-art-template模板引擎
express学习11-express-art-template模板引擎
157 0
express学习11-express-art-template模板引擎
|
JavaScript 前端开发 API
node.js中使用模板引擎art-template
node.js中使用模板引擎art-template
406 0
node.js中使用模板引擎art-template