art-template入门(三)之语法

转载自  art-template语法

语法

art-template 支持标准语法与原始语法。标准语法可以让模板易读写,而原始语法拥有强大的逻辑表达能力。

标准语法支持基本模板语法以及基本 JavaScript 表达式;原始语法支持任意 JavaScript 语句,这和 EJS 一样。

一、输出

标准语法

{{value}}
{{data.key}}
{{data['key']}}
{{a ? b : c}}
{{a || b}}
{{a + b}}

原始语法

<%= value %>
<%= data.key %>
<%= data['key'] %>
<%= a ? b : c %>
<%= a || b %>
<%= a + b %>

模板一级特殊变量可以使用 $data 加下标的方式访问:

{{$data['user list']}}

二、原文输出

标准语法

{{@ value }}

原始语法

<%- value %>

原文输出语句不会对 HTML 内容进行转义处理,可能存在安全风险,请谨慎使用。

三、条件

标准语法

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

原始语法

<% if (value) { %> ... <% } %>
<% if (v1) { %> ... <% } else if (v2) { %> ... <% } %>

四、循环

标准语法

{{each target}}{{$index}} {{$value}}
{{/each}}

原始语法

<% for(var i = 0; i < target.length; i++){ %><%= i %> <%= target[i] %>
<% } %>
  1. target 支持 array 与 object 的迭代,其默认值为 $data
  2. $value 与 $index 可以自定义:{{each target val key}}

五、变量

标准语法

{{set temp = data.sub.content}}

原始语法

<% var temp = data.sub.content; %>

六、模板继承

标准语法

{{extend './layout.art'}}
{{block 'head'}} ... {{/block}}

原始语法

<% extend('./layout.art') %>
<% block('head', function(){ %> ... <% }) %>

模板继承允许你构建一个包含你站点共同元素的基本模板“骨架”。范例:

<!--layout.art-->
<!doctype html>
<html>
<head><meta charset="utf-8"><title>{{block 'title'}}My Site{{/block}}</title>{{block 'head'}}<link rel="stylesheet" href="main.css">{{/block}}
</head>
<body>{{block 'content'}}{{/block}}
</body>
</html>
<!--index.art-->
{{extend './layout.art'}}{{block 'title'}}{{title}}{{/block}}{{block 'head'}}<link rel="stylesheet" href="custom.css">
{{/block}}{{block 'content'}}
<p>This is just an awesome page.</p>
{{/block}}

渲染 index.art 后,将自动应用布局骨架。

七、子模板

标准语法

{{include './header.art'}}
{{include './header.art' data}}

原始语法

<% include('./header.art') %>
<% include('./header.art', data) %>
  1. data 数默认值为 $data;标准语法不支持声明 object 与 array,只支持引用变量,而原始语法不受限制。
  2. art-template 内建 HTML 压缩器,请避免书写 HTML 非正常闭合的子模板,否则开启压缩后标签可能会被意外“优化。

八、过滤器

注册过滤器

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

过滤器函数第一个参数接受目标值。

标准语法

{{date | timestamp | dateFormat 'yyyy-MM-dd hh:mm:ss'}}

{{value | filter}} 过滤器语法类似管道操作符,它的上一个输出作为下一个输入。

原始语法

<%= $imports.dateFormat($imports.timestamp(date), 'yyyy-MM-dd hh:mm:ss') %>

如果想修改 {{ }} 与 <% %>,请参考 解析规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在物理内存中观察CLR托管内存及GC行为

虽然看了一些书&#xff0c;还网络上的一些博文&#xff0c;不过对CLR托管内存细节依然比较模糊。而且因为工作原因总会有很多质疑&#xff0c;想要亲眼看到内存里二进制数据的变化。 所以借助winhex直接查看内存以证实书上的描述或更进一步揣摩CLR托管内存的运作方式&#xff…

2017蓝桥杯省赛---java---B---1(购物单)

题目描述 &#xff08;购物单&#xff09; 思路分析 cmd 打开电脑上的计算器算(算出来的结果是00结尾&#xff0c;作为检测) 答案 5200

art-template入门(四)之调试

转载自 art-template调试 template.defaults.debug art-template 内建调试器&#xff0c;能够捕获到语法与运行错误&#xff0c;并且支持自定义的语法。在 NodeJS 中调试模式会根据环境变量自动开启&#xff1a;process.env.NODE_ENV ! production 设置 template.defaults.…

java 取随机正整数_Java获取随机数

Java 获取随机数import java.util.Random;public class randomDemo {public static void main(String[]args){randomDemo rnew randomDemo();System.out.println(r.randomCode());}public static String randomCode() {StringBuilder str new StringBuilder("");Ran…

DataProtection设置问题引起不同ASP.NET Core站点无法共享用户验证Cookie

这是这两天ASP.NET Core迁移中遇到的一个问题。2个ASP.NET Core站点&#xff08;对应于2个不同的ASP.NET Core Web应用程序&#xff09;&#xff0c;2个站点都可以登录&#xff0c;但在其中任1个站点登录后&#xff0c;在当前站点处于登录状态&#xff0c;访问另外1个站点却处于…

mybatis+spring报错PropertyAccessException 1

男生关注会更帅&#xff0c;女生关注会更美&#xff01;mybatisspring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationExceptionorg.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined…

java synchronized 使用_Java中synchronized的使用实例

Java中synchronized的使用实例synchronized关键字&#xff0c;代表这个方法加锁&#xff0c;相当于不管哪一个线程(例如线程A)&#xff0c;运行到这个方法时&#xff0c;都要检查有没有其它线程B(或者C、D等)正在用这个方法&#xff0c;若有则要等正在使用synchronized方法的线…

字符串暴力匹配算法+思路分析

思路分析 代码实现 package com.atguigu.kmp;/*** 创建人 wdl* 创建时间 2021/4/4* 描述*/ public class ViolenceMatch {public static void main(String[] args) {//测试暴力匹配算法String str1 "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好";String str2&quo…

art-template入门(五)之模板变量

转载自 art-template模板变量 模板变量 template.defaults.imports 模板通过 $imports 可以访问到模板外部的全局变量与导入的变量。 导入变量 template.defaults.imports.log console.log;<% $imports.log(hello world) %>内置变量清单 $data 传入模板的数据$imp…

springmvc中报错Request processing failed;

今天在整个ssm的时候出现了个低级错误&#xff0c;找了好久才找出来&#xff0c;在发现真理的那一刻&#xff0c;我都有死的冲动了。 报错如下&#xff1a; HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Optional int …

在.NET Core 上运行的 WordPress

在.NET Core 上运行的 WordPress,无需安装PHP既可跨平台运行WordPress。 在Peachpie中实现PHP所需的功能数月后&#xff0c;现在终于可以运行一个真实的应用程序&#xff1a;WordPress。 本文是基于Peachpie https://github.com/iolevel/peachpie Peachpie是一个基于Microsof…

java for遍历hashmap_Java 使用for和while循环遍历HashMap的方法及示例代码

1&#xff64;使用entrySet()遍历1) 使用while实现public static void printMap(Map mp) {Iterator it mp.entrySet().iterator();while (it.hasNext()) {Map.Entry pair (Map.Entry)it.next();System.out.println(pair.getKey() " " pair.getValue());it.remov…

art-template入门(六)之解析规则

转载自 art-template解析规则 解析规则 template.defaults.rules art-template 可以自定义模板解析规则&#xff0c;默认配置了原始语法与标准语法。 修改界定符 // 原始语法的界定符规则 template.defaults.rules[0].test /<%(#?)((?:|#|[-])?)[ \t]*([\w\W]*?)[…

求集合中的公共元素

package com.atguigu.TEST;import javax.swing.plaf.basic.BasicScrollPaneUI; import java.util.HashSet;/*** 创建人 wdl* 创建时间 2021/4/4* 描述*/ public class Test {public static void main(String[] args) {HashSet<String> hashSet1 new HashSet<>();H…

mybatis使用全注解的方式案例(包含一对多关系映射)

前面我写过ssh&#xff1a;ssh(SpringSpring mvchibernate)简单增删改查案例 和ssm&#xff1a;ssm(SpringSpring mvcmybatis)的案例&#xff0c;需要了解的可以去看看&#xff0c;今天我写了一下ssm(springspringmvcmybatis)全注解的方式又重新写了一遍两表增删改查的案例&…

Visual Studio 2017全面上市

自从1997年第一版发布的20年以来&#xff0c;微软Visual Studio开发工具一向以易学易用、功能齐全而闻名&#xff0c;帮助开发者以简驭繁&#xff0c;即使面对越来越快速的交付压力&#xff0c;也能大幅提高生产力&#xff0c;好整以暇。对于Visual Studio的使用者而言&#xf…

art-template入门(七)之压缩页面

转载自 art-template压缩页面 压缩页面 template.defaults.minimize art-template 内建的压缩器可以压缩 HTML、JS、CSS&#xff0c;它在编译阶段运行&#xff0c;因此完全不影响渲染速度&#xff0c;并且能够加快网络传输。 开启 template.defaults.minimize true;配置 …

java getimage_Java ImageView.getImage方法代码示例

import javafx.scene.image.ImageView; //导入方法依赖的package包/类FXThreadprivate static void updateListener(NotNull final Node node, NotNull final ImageView imageView,NotNull final ReadOnlyBooleanProperty condition,NotNull final Object listenerKey, NotNull…

Visual Studio 2017发布会:黄金时代的家族聚会

美国时间三月七日&#xff08;北京2017年3月8日&#xff09;&#xff0c;微软正式发布了Visual Studio 2017&#xff0c;自己旗舰开发工具的最新版本。同日发布的主要产品还有 .NET Core Tooling 1.0.NET Core 微服务实例Visual Studio for Mac Preview 4Visual Studio Mobile …

java开发可以转什么软件有哪些_转行开发软件Java编程必须会什么

原标题&#xff1a;转行开发软件Java编程必须会什么要想开发软&#xff0c;Java编程必须会什么&#xff1f;最起码的就是逻辑思维要好&#xff0c;只要不是特别差就没有什么问题。数学是相对比较能够体现出一个人的逻辑思维如何。先想想自己以前上学的时候&#xff0c;数学成绩…