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')}}


相关文章
|
存储 XML Java
Flowable工作流-高级篇
Flowable工作流-高级篇
7039 1
|
Web App开发 JavaScript 前端开发
JavaScript中的性能优化:代码优化技巧与性能分析工具
【4月更文挑战第22天】本文探讨JavaScript性能优化,包括代码优化技巧和性能分析工具。建议避免全局查找、减少DOM操作、使用事件委托、优化循环和异步编程以提升代码效率。推荐使用Chrome DevTools、Lighthouse和jsPerf等工具进行性能检测和优化。持续学习和实践是提升JavaScript应用性能的关键。
|
4月前
|
缓存 监控 安全
电商API集成入门:从零开始搭建高效接口
在数字化电商时代,API集成成为企业提升效率、实现系统互联的关键。本文从零开始,逐步讲解如何搭建高效、可靠的电商API接口,适合初学者学习。内容涵盖API基础、认证安全、请求处理、性能优化等核心步骤,并提供Python代码示例与数学公式辅助理解。通过实践,读者可掌握构建优质电商API的技巧,提升用户体验与系统性能。
230 0
|
9月前
|
设计模式 搜索推荐 测试技术
提示词工程的十大认知误区
本文将列举一些提示工程认知和创作方面的认知误区,并分享了作者的一些见解,希望能够为读者提供启发。
428 35
|
11月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
331 3
|
存储 JavaScript 前端开发
什么是全局污染?怎么避免全局污染?
什么是全局污染?怎么避免全局污染?
452 0
|
Ubuntu NoSQL 数据安全/隐私保护
如何在在虚拟机中安装Ubuntu
如何在在虚拟机中安装Ubuntu
678 0
|
缓存 监控 中间件
构建高效的Go语言Web服务器:基于Fiber框架的性能优化实践
在追求极致性能的Web开发领域,Go语言(Golang)凭借其高效的并发处理能力、垃圾回收机制及简洁的语法赢得了广泛的青睐。本文不同于传统的性能优化教程,将深入剖析如何在Go语言环境下,利用Fiber这一高性能Web框架,通过精细化配置、并发策略调整及代码层面的微优化,构建出既快速又稳定的Web服务器。通过实际案例与性能测试数据对比,揭示一系列非直觉但极为有效的优化技巧,助力开发者在快节奏的互联网环境中抢占先机。
|
SQL 监控 关系型数据库
使用SQL语句查询操作耗时的技巧与方法
在数据库管理和优化过程中,了解SQL查询操作的耗时是至关重要的
1673 0
|
安全 网络安全 数据安全/隐私保护

热门文章

最新文章