template 的使用

2023-11-19

 

插件介绍:template 是一个高性能的JavaScript模板引擎。

 

插件特性:

  1、性能卓越,执行速度快(mustache 与 tmpl 的20多倍);

  2、支持运行时调试,可精准定位异常模板所在语句;

  3、对 NodeJS Express 有很好的支持;

  4、安全,默认对输出进行转义;

  5、可在浏览器端实现按路径加载模板;

  6、支持预编译,可将模板转换成为非常精简的 js 文件;

  7、模板语句简介,无需前缀引用数据,拥有简洁版本和原生版本可供选择;

  8、支持所有流行的浏览器;

 

开始使用(有两种语法, 此文章介绍的是简介语法)

  1) artTemplate 模板必须使用一个type="text/html" 的 script 标签用来存放模板(标签中写的是HTML);

 <script type="text/html"></script>

 

  2) 开始编写自己的模板

 <script id="model" type="text/html">
     <h1>{{title}}</h1>
     <ul>
         {{each list as value index}}
             <li>{{index+1}}、{{value}}</li>
         {{/each}}
     </ul>
 </script>

 

  3) 使用数据渲染模板

 var data ={
     title: '热爱的游戏',
     list: ['LOL','王者农药','梦三国','魔兽争霸','其它']
 };

var html = template('model',data);
 document.getElementById('box').innerHTML = html

 

到了这一步,打开页面就可以看到效果了。

 

artTemplate 简洁语法介绍:

1) 使用之前需要引用简洁语法的版本,例如:

 <script src="template.js"></script>

2) 表达式:

  {{ 和 }} 符号包裹起来的语句则为模板的表达式。

3) 输出表达式:

  对内容编码输出: {{ title }}

  对内容不编码输出: {{ #title }}

  区别:

 // 假如有这样一段数据,title 内出现了标签 
var
data ={ title: '<i>热爱的</i>游戏', list: ['LOL','王者农药','梦三国','魔兽争霸','其它'] };

{{ title }} // 显示内容为:<i>热爱的</i>游戏

{{ #title }} // 显示内容为:热爱的游戏

 

4) 条件表达式

<script id="model" type="text/html">
    <h1>{{ title }}</h1>
    <ul>
     // 判断条件自定 {{if list.length>0}} {{each list as value index}} <li>{{index+1}}、{{value}}</li> {{/each}} {{else}} <p>没有内容</p> {{/if}} </ul> </script>

 

5) 遍历表达式

{{each list as value index}}
    <li>{{index+1}}、{{value}}</li>
{{/each}}

// 也可以被简写为
{{each list}}
    <li>{{$index+1}}、{{$value}}</li>
{{/each}}

 

artTemplate 方法:

  template 函数中有两个参数值。

  第一个参数表示需要编译的模板(填写的是模板的 ID)

  第二个参数是需要向模板填充的数据,返回值是编译之后的HTML字符串;

  // 目前了解到此处

 

artTemplate 默认配置

 

示例:

<script id="people" type="text/html">
    <h1>{{title}}</h1>
    <ul>
        {{if peos.length>0}}
            {{each peos as p index}}
                <li>
                    {{index+1}}、
                    选手姓名:<span>{{p.name}</span>&#x3000;
                    年龄:<span>{{p.age}}</span>
                </li>
            {{/each}}
        {{else}}
            <p>没有内容</p>
        {{/if}}
    </ul>
</script>

<script>
    var data2 ={
        title: '喜欢的职业选手',
        peos: [
            {
                name: "<b>Uzi</b>",
                age: 20
            },
            {
                name: 'Clearlove7',
                age: 20
            },
            {
                name: 'Korol',
                age: 21
            }
        ]
    }
    // 默认为true 不编译 输出为 <b>Uzi</b>
  // false 编译 是否编码输出 HTML 字符
template.config("escape",false); var html2 = template('people',data2); document.getElementById('box2').innerHTML = html2; </script>

 

 

 

转载于:https://www.cnblogs.com/wyhlightstar/p/7117856.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

template 的使用 的相关文章

随机推荐

  • 华为hilens 系统制作

    恢复出厂设置 https support huawei com enterprise zh doc EDOC1100112066 9b0a1fba 长按RST按钮2 3秒 在这个过程中 短按电源按钮后松开 当前面板健康指示灯出现橙色 常亮
  • Debian 12 发布,迄今为止最佳 Linux 版本

    Debian 项目今天发布了 Debian 12 Bookworm 操作系统的最终版本 这是一个重大发布 带来了几个新功能 更新的组件和许多改进 凭借其长期稳定和安全的历史 Debian 12 备受全球开源爱好者的热切期待 这个新版本带来了
  • 图书馆管理系统开发(C# && Sql Server)

    图书馆管理系统 C S架构软件 开发 主要步骤 遇见问题 1 主要步骤 1 1 学习主干知识 大概懂得数据库相关sql语法 大概懂得C 语法 C 菜鸟教程 把基础篇看看 大概掌握 Net开发窗口界面 Net教程 然后可以实战一下项目 VS2
  • 将嘉立创中元件导出为AD封装库使用

    AD封装库的选择和元件的查找实在让人头大 我们不妨使用好嘉立创提供的丰富元器件库 如果想要找到想要的元件 可以直接去嘉立创EDA 标准版 的元件库中寻找 在符号类型中可以找到原理图文件 很奇怪 在嘉立创商城中直接搜索的话元器件会比在嘉立创E
  • python列表输出去掉引号_如何从导出的python列表中删除逗号、引号和圆括号?

    你们帮了我最后一个新手的忙 所以我想我会再问一次 现在 我的Python 3代码从CSV文件中获取数据 将数据存储为列表 创建该数据的排列 并以列格式将其导出回新的CSV文件 不幸的是 导出列表的格式不适合我的需要 我的问题是 如何在pyt
  • vue3.0项目报错:删除node包重新装报错

    前言 vue3 0的项目删除node包以后重新装项目 会报错 vue loader v16 找不到 安装以后下次再删包 再装会报错webpack的问题 解决办法 在新建项目后 打开pack json文件 找到 devDependencies
  • 【积累】Element-ui,el-dialog里面嵌入el-form,resetFields失效问题

    记一次element ui el dialog里面嵌入el form 使用resetFields方法初始化表单失效 问题记录 前提 当el form在一个el dialog中 dialog显示与否绑定变量 showDialog ref 为
  • 用DC-DC 升压降压以及产生负电压的原理及应用

    文章目录 前言 一 Boost和Buck电路 二 实际使用 1 DC DC芯片 2 DC DC芯片产生负电压 前言 在设计电源电路时经常会用到升压降压和负电压等电路 博主结合理论知识和实际应用加上自己理解 分享这篇文章 一 Boost和Bu
  • 设置无线路由器与有线网络在同一网段

    公司有两台路由器 一台连接internet的大路由器 一台无线路由器 两台路由器不在同一网段 所以无法实现互联互通 在一个局域网中很不方便 原设置 无线路由器的WAN口连接到大路由器上 插网线 无线路由器的WAN IP设置与大路由器一个网段
  • 【微信小程序】wx.request出现undefined

    偶现 天啦噜 一直困惑了很久的bug终于找到原因了 示例代码如下 wx request sucess function res if res statusCode 200 res data status 200 do something e
  • csdn中使用KaTeX给公式编号

    说明 csdn用的公式编辑器是Katex 并不是LaTeX 两者语法有些区别 比如LaTeX中的公式编号 begin equation 在KateX中就会解析错误 katex中 给公式编号用 tag 1 的形式 例如 E mc 2 tag
  • 【Threejs效果:挖空几何体】ThreeBSP实现墙体挖洞

    1 效果如下 2 代码如下 基本思路 1 创建两个mesh 一个墙体 一个窗户 2 然后取墙体和窗户的差集 将差集转换成几何体 3 根据几何体新建mesh 并贴纹理 依赖库有三个 import as THREE from three imp
  • CPU系统级验证——概览索引

    1 RISC V CPU核指令集验证分析 1 wujian100 1 SoC核分析 无剑100实际上是一款低功耗SoC 采用的CPU核是E902 core通过AHB总线与Icache相连 2 验证环境分析 通过 readmemh test
  • Nginx的alias的用法及与root的区别(转)

    http nginx org en docs http ngx http core module html alias http nginx org en docs http ngx http core module html root 以
  • Anaconda创建虚拟环境出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.ts解决办法

    使用Anaconda创建一个新的环境 执行 conda create n scrapyEnv python 3 6 结果出现了 CondaHTTPError HTTP 000 CONNECTION FAILED for url https
  • 电脑上有哪些好用的视频剪辑软件

    http www 360doc com content 18 0712 08 55889173 769741943 shtml 可以说 现在视频正日益成为营销和社交媒体的一个组成部分 这就是为什么会有视频编辑越来越火的原因 这已随着视频在当
  • matlab 从点云中移除隐藏点

    目录 一 功能概述 1 算法概述 2 主要函数 二 代码实现 三 结果展示 四 参考链接 一 功能概述 1 算法概述 该函数使用如下步骤从指定的视点确定点云中的可见点 1 将点云与中心位于视点的坐标系相关联 2 使用球形投影进行反演 创建一
  • nginx配置vue(history模式)

    问题的原因 项目本来使用 hash 的路由模式来部署 因为需求关系 现在要改成 history 的模式来部署了 路径上不要有 号 第一步 修改项目的 router index js 的配置 const router new VueRoute
  • modbus总线协议(一)modbus rtu

    一 介绍 Modbus协议由Modicon公司开发出来 现在Modbus是工业领域全球最流行的协议 硬件支持RS 232 RS 422 RS 485和以太网设备 应用在PLC DCS 智能仪表等工控领域 图片来源于网络 二 modbus协议
  • template 的使用

    插件介绍 template 是一个高性能的JavaScript模板引擎 插件特性 1 性能卓越 执行速度快 mustache 与 tmpl 的20多倍 2 支持运行时调试 可精准定位异常模板所在语句 3 对 NodeJS Express 有