模板引擎 template

2023-10-29

1.特性:

性能卓越,执行速度通常是Mustache与tmpl的20多倍(性能测试)

支持运行时调试,可精确定位异常模板所在的语句

对NodeJS Express友好支持

安全,默认对输出进行转义、在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板)

支持include语句

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

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

模板语句简洁,无需前缀引用数据,有简洁版本与原生语法版本可选

支持所有流行的浏览器

2.使用一个type="text/html"的script标签存放模板

编写模板

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

<h1>{{title}}</h1>

<ul>

        {{each  list  as  value  i}}

               <li>索引  {{i+1}} : {{value}} </li>

       {{/each}}

</ul>

</script>

渲染模板

var  data={

      title:'标签',

      list:['文艺','博客','摄影','电影','民谣','旅行','吉他']

}

var  html=template('test',data);

document.getElementById('content').innerHTML=html;

3.简洁语法和原生语法

简洁语法     template.js

{{if admin}}

       {{include  'admin_content'}} 

      {{each  list}}

             <div>{{$index}}.{{$value.user}}</div>

      {{/each}}

{{/if}}

原生语法      template-native.js

<%if    (admin)   {%  >

    <%  include('admin_count')  %>

    <%  for(var i=0;i<list.length;i++)  {  %>

             <div><%=i%>.<%=list[i].user%></div>

    <%  }  %>

<%  }  %>

4.方法(若没有data参数,将返回渲染函数)

template.compile(source,options)       返回一个渲染函数

template.render(source,options)      将返回渲染结果

template.helper(name,callback)      添加辅助方法,例如时间格式器:演示

template.config(name,value)       更改引擎的默认设置
 

5.使用预编译(预编译工具:TmodJS)

按文件与目录组织模板

template('tpl/home/main',data)

模板支持子模板

{{include  '../public/header'}}

 

基于预编译:

可将模板转换为非常精简的js文件(不依赖引擎)

使用同步模板加载接口

支持多种js模板输出:AMD、CMD、CommonJS

支持作为GruntJS插件构建

前端模板可共享给NodeJS执行

自动压缩打包模板

6.NodeJS安装

安装

     npm  inatall  art-template

使用

      var template =require('art-templadr') ;

      var  data={list:["aui","test"]};

      var  hrml=template(_dirname+'/index/main',data);

配置base指定模板目录可以缩短模板的路径,并能避免include语句越级访问任意路径引发安全隐患

      template.config('base',_dirname);

      var  html=template('index/html',data)

NodeJS+Express

      var  template=require('art-template');

      template.config('base','');

      template.config('extname','.html');

      app.engine('.html',template._express);

      app.set('view  engine','html');

      //app.set('views',_dirname+'/views');

运行demo

      node  demo/node-template-express.js

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

模板引擎 template 的相关文章

  • 对开发来讲,业务重要还是技术重要?

    很多开发者为天天写业务代码无暇提升技术而焦虑 苦恼 比如 又如 又如 再如 那么 作为开发者 到底该怎么面对 写业务代码 这件事呢 今天我们就从以下几个方面聊聊这个话题 什么是业务 业务和技术的关系 业务和因解决业务而衍生的业务 对业务的态
  • java转go语言,值得转吗?

    有这个想法的不在少数了 也就意味着这条路并不是想想的那样 Java确实比以前卷了 但是你能保证转过去比别人做的更好 别拿自己的劣势跟别人的优势争 先守好自己的一亩三分地 把技术提高一个层次 相对来说卷的人数就少了 其实拿GO语言和JAVA相
  • vue遍历Map,Map在vue中的使用方法

    Map在vue中的使用方法 html 遍历的时候要遍历两遍
  • C/C++函数模板template

    1 说明 当函数处理功能相似 函数名相同 但是参数个数或者类型有区别 我们知道实现的方式是依靠函数重载 overload 但是如果仅函数参数或返回数的类型不同 我们想到靠函数模板解决这个问题 不仅节省内存 而且不用复杂声明多个函数 函数模板
  • 当了程序员才知道的事情

    坐在靠墙角的程序员王二狗 如果这哥们键盘敲的啪啪响 时不时面带笑容 很可能是在跟前台 测试 UI 美工 产品的小美眉聊今天又发现楼下新开的餐馆 如果嘴角带弧度 手不放在键盘上而是一直抓着鼠标擦滚轮且显示器角度靠内 那一定是摸鱼刷某乎 如果这
  • 不管人工智能发展如何 开发者都有必要了解 Linux 内核

    Linux内核在计算机世界的地位有目共睹 称它为计算机世界的基石也不为过 而且它还是全球最大的开源项目 几乎最知名的科技公司都参与其中 包括谷歌 Red Hat SUSE Intel Facebook 甲骨文和华为等 当然还包括Linux的
  • 解决Android Studio安装过程中“SDK tools directory is missing”的问题

    SDK tools directory is missing 这是因为安装时你的计算机无法连接到google的服务器 对google服务器的域名地址解析出问题了 无法从google服务器下载SDK tools 安装时自动跳过安装SDK to
  • 前端,后端,全栈哪个好找工作?

    职场老油子说说 现在啥岗位不好找工作 啥 想钱多 活少 离家近 最好单位发异性 这得靠实力 运气 如果是刚毕业 啥都不懂但又想从事技术行业 可以到职场上历练 而不是说报个培训机构 他们只能解决你的焦虑问题 而不是实际问题 如果只是混个工作
  • Qt限制文本框输入的方法

    在做界面编程的时候 对文本框的处理往往是个很头疼的事情 一是焦点进入文本框时 从人性化考虑 应选择文本框中文本 方便输入 二是 限制文本框的输入 只允许输入有效的文本 如果不这样做的话 那么就需要在程序中滤去非法输入 在这里介绍一种解决上述
  • 如何判断是否适合学编程?

    能问出这个问题的人 肯定是心里有点想学习编程 但是又担心自己不适合学习编程 学不会反而浪费时间 那么 如何判断自己是否适合学习编程呢 可以从如下几个方面入手 1 明确自己为什么要学编程 因为不同的编程语言适用的领域不一样 比如我认识一个做互
  • JAVA之初识springMVC框架

    1 环境 操作系统 Mac OS 10 12 6 Tomcat v7 0 JDK 1 7 工具 eclipse 2 新建项目 用eclipse新建项目 选择Dynamic Web Project 将项目字符集改为UTF 8 3 编辑web
  • 【零知ESP8266教程】快速入门5-使用按键来控制你的灯

    上节课 我们已经学习了如何制作一个简易交通灯 那么如何去控制一个LED的亮或者灭呢 此次试验采用按键来控制我们的LED 实现LED的简单控制 一 工具原料 电脑 windows系统 ESP8266开发板 micro usb线 LED灯一个
  • tensorflow-gpu版本详细安装教程(Win10,Python3.7.9,cuda11.2,cudnn8.1.0)

    目录 cuda安装 cudnn安装 python安装 tensorflow安装 cuda安装下载 首先要注意自己的显卡支持cuda的版本 可以这样自查 可以看到适合自己的cuda版本 这里我选择了cuda11 2版本 cuda安装包下载链接
  • win10系统下安装Kafka 的详细步骤

    Win10 系统下要使用Kafka需要经过以下三个步骤 1 安装JDK 需要安装依赖java JDK 2 安装zookeeper 资源协调 分配管理 3 安装Kafka 一 安装 Java SE Development Kit 13 0 1
  • Docker-swarm 介绍,集群,多服务部署实战

    一 什么是Docker Swarm Swarm是Docker公司推出的用来管理docker集群的平台 几乎全部用GO语言来完成的开发的 代码开源在https github com docker swarm 它是将一群Docker宿主机变成一
  • pymongo "ServerSelectionTimeoutError: No servers found yet" 错误的解决

    系统转移过程中 擅自把aptitude安装的mongoengine换成了pip安装 系统启动以后 报这个错误 报错提示 File usr local lib python2 7 dist packages pymongo mongo cli
  • 移动端H5开发遇到的问题

    移动端开发必会出现的问题和解决方案 H5开发过程中难免会遇到一些兼容性等爬过坑的问题 移动端 H5 相关问题汇总 1px 问题 响应式布局 iOS 滑动不流畅 iOS 上拉边界下拉出现白色空白 页面件放大或缩小不确定性行为 click 点击
  • XSS & SQL injection

    作者 CyberPhreak XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X Web Security XSS more X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 介绍在这篇文章中我将说明所有关于X
  • linux中mysql启动服务命令(合集)

    linux的mysql启动服务命令 linux的mysql启动服务命令1 使用mysqld启动 关闭MySQL服务 mysqld是MySQL的守护进程 我们可以用mysqld来启动 关闭MySQL服务 关于mysqld MySQL 5 6官
  • 求最大公约数,和最小公倍数的规则

    求最大公约数 和最小公倍数的规则 最大公约数 Greatest Common Divisor 简称GCD 是指两个或多个整数共有约数中最大的一个 例如 12和18的最大公约数是6 因为12和18同时都能被6整除 求最大公约数的规则包括 辗转

随机推荐

  • 【ShaderToy】基础篇之谈谈点、线的绘制

    写在前面 写前面一篇的时候 发现还是不够基础 因此打算增加几篇基础篇 从点线面开始 希望可以更好理解 其实用Pixel Shader的过程很像在纸上绘画的过程 屏幕上的每一个像素对应了纸上的一个方格 如果你愿意 你甚至可以一个个判断像素的位
  • 【KingFusion】如何设置日期控件默认选择最近24小时

    哈喽 大家好 我是雷工 本篇记录一个日期时间控件的使用过程 以下为应用笔记 1 问题描述 KingFusion中 对于一些特定的查询情况下 需要设置日期时间控件默认显示前一天的日期时间到当前时间24小时内的选择范围 但是由于考虑到每月的天数
  • Amazon Fargate 使用 Seekable OCI 实现更快的容器启动速度

    虽然在部署和扩展应用程序时 使用容器进行开发的方式已日趋流行 但仍有一些领域可以改进 扩展容器化应用程序的主要问题之一是启动时间长 尤其是在纵向扩展期间 需要添加较新的实例 此问题可能会对客户体验 例如 当网站需要横向扩展以提供额外流量时
  • cross-tissue 成纤维细胞比例.r

    getwd setwd G lung fibrosis mouse stable state mouse ssfibro readRDS Mouse SS Fibro RDS library Seurat head mouse ssfibr
  • Vue组件生命周期与钩子函数

    组件生命周期 组件 组件是可复用的 Vue 实例 从创建到销毁的过程就是组件的生命周期 是一个时间段 组件生命周期钩子函数 vue3与vue2生命周期钩子函数略有不同 本文以vue2为主 VUE 提供的生命周期钩子函数 会伴随组件的生命周期
  • 超级签具体实现

    签名原理 使用了苹果提供给开发者的Ad Hoc分发通道 把安装设备当做开发设备进行分发 优势 直接分发 安装即可运行 稳定 不会有证书吊销导致的风险 缺点 单开发者账号的iPhone设备数量只有100个 整体架构 设备安装描述文件后 会向服
  • 数据结构(C语言)——单链表

    整体结构如上 看似简单 但第一次用C语言实现还是感觉有点吃力 尤其是特别容易让链表断裂 下面是代码 有链表的增删改查 注 这里E类型是用define将int进行了宏定义 include
  • java 单一登录

    对于一个帐号在同一时间只能一个人登录 可以通过下面的方法实现 1 在用户登录时 把用户添加到一个ArrayList中 2 再次登录时查看ArrayList中有没有该用户 如果ArrayList中已经存在该用户 则阻止其登录 3 当用户退出时
  • 【笔记】三剑客之awk、sed后向引用

    sed后向引用 语法格式 sed r s 1 g file 1 表示获取第一个括号中的内容 sed支持扩展正则需要加r参数 案例1 调用括号中的内容 root ahui echo root sed r s root 1 g root 案例2
  • 计算机组成原理实验三-----系统总线和具有基本输入输出功能的总线接口实验

    总线是计算机中连接各个功能部件的纽带 是计算机各部件之间进行信息传输的公共通路 总线不只是一组简单的信号传输线 它还是一组协议 他有两大特征 分时 同一总线在同一时刻 只能有一个部件占领总线发送信息 其他部件要发送信息得在该 部件发送完释放
  • 【Echarts】echarts渐变色仪表盘

    echarts渐变色仪表盘 echarts随意一个示例代码 直接点击上方链接 将此段代码放到echarts的示例代码编辑框里 let dataList9 total 85 list name 待处置 value 1501 name 处置中
  • 目标检测发展与综述

    目标检测发展与综述 绪论 在github上的git主hoya012整理了关于目标检测的相关论文 点击此处可获取原文链接GitHub hoya012 deep learning object detection A paper list of
  • curl -u 背后的内容以及和 Django rest framework 的 BasicAuthentication 的呼应

    curl u 的基本介绍 curl 是常用的命令行工具 用来请求 Web 服务器 它的名字就是客户端 client 的 URL 工具的意思 它的功能非常强大 命令行参数多达几十种 如果熟练的话 完全可以取代 Postman 这一类的图形界面
  • libusb编译、测试、使用

    要用到才开始学 啥都不懂 感觉好难受 最近要在ARM Linux嵌入式端集成libusb 刚开始搞 慢慢写 首先是libusb的交叉编译和测试 交叉编译 下载libusb的源码 下载地址 https sourceforge net proj
  • upload-labs1-5

    用浏览器打开upload 第一关 js检查 上传文件会获得提示 把文件后缀改为 jpg png gif 我这里用的是jpg 打开burpsuite在upload上传修改后的文件进行爪包 在burpsuite中修改文件进行回显 第二关 仅判断
  • Java学习笔记(十九)

    Spring Cloud 什么是Spring Cloud Spring cloud 应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序 提供与外部系统的集成 更专注于服务治理 Spring cloud Task 一
  • eix安装_U盘安装原版Windows7

    教程简介 本教程为U盘安装原版Windows 7 我将带领大家学习如何用U盘安装原版的Windows7系统 希望对大家有帮助 在开始安装之前需要了解常见电脑的U盘启动按键都有哪些 请仔细阅读下表 安装步骤 一定要看步骤3 不然造成数据损坏概
  • 爬虫入门第2课:代理池的设计

    爬虫学习知识点及案例篇 汇总 爬虫入门第1课 代理池概述及开发环境 本阶段带大家从代理池的设计开始 学习Python爬虫及项目实战 详情关注上方专栏 1 代理池的工作流程 目标 理解代理池的工作流程 以及 各个模块的作用 内容介绍 代理池的
  • Java-API简析_java.net.InetAddress类(基于 Latest JDK)(浅析源码)

    版权声明 未经博主同意 谢绝转载 请尊重原创 博主保留追究权 https blog csdn net m0 69908381 article details 131590559 出自 进步 于辰的博客 因为我发现目前 我对Java API的
  • 模板引擎 template

    1 特性 性能卓越 执行速度通常是Mustache与tmpl的20多倍 性能测试 支持运行时调试 可精确定位异常模板所在的语句 对NodeJS Express友好支持 安全 默认对输出进行转义 在沙箱中运行编译后的代码 Node版本可以安全