标签含义

  • <% %> :'脚本' 标签,用于流程控制,无输出即直接使用JavaScript语言。

  • <%= %>:转义输出数据到模板(输出是转义 HTML 标签)即在后端定义的变量,可以再前端显示输出

  • <%- %>:非转义输出数据到模板

  • <%# %>:注释标签,不执行、不输出内容

  • <%% %>: 输出字符串 '<%'

  • %>: 一般结束标签

  • -%> :删除紧随其后的换行符

  • <%_ 删除其前面的空格符

  • _%> 将结束标签后面的空格符删除

⚠️ 空格不是必须的

用法

var template = ejs.compile(str, options);
template(data);
// => 输出绘制后的 HTML 字符串

ejs.render(str, data, options);
// => 输出绘制后的 HTML 字符串

ejs.renderFile(filename, data, options, function(err, str){// str => 输出绘制后的 HTML 字符串
});

options参数

  • cache 是否缓存解析后的模版,需要filename作为key;

  • filename 模版文件名被 cache 参数用做键值,同时也用于 include 语句

  • context 函数执行时的上下文环境

  • compileDebug 标识是否是编译debug,为true则会生成解析过程中的跟踪信息,用于调试;当为 false 时不编译调试语句

  • client 标识是否用于浏览器客户端运行,为true则返回解析后的可以单独运行的Function函数

  • open 代码开头标记,默认为'<%';

  • close 代码结束标记,默认为'%>';

  • delimiter 放在角括号中的字符,用于标记标签的开与闭,也就是自定义模版标签

  • debug 标识是否是debeg状态,debug为true则会输出生成的Function内容

  • _with 是否使用 with() {} 结构。如果为 false,所有局部数据将存储在 locals 对象上。

  • localsName 如果不使用 with ,localsName 将作为存储局部变量的对象的名称。默认名称是 locals

  • rmWhitespace 删除所有可安全删除的空白字符,包括开始与结尾处的空格。对于所有标签来说,它提供了一个更安全版本的 -%> (在一行的中间并不会剔除标签后面的换行符)。

  • escape 为 <%= 结构设置对应的转义(escape)函数。它被用于输出结果以及在生成的客户端函数中通过 .toString() 输出。(默认转义 XML)。

自定义分隔符

可针对单个模板或全局使用自定义分隔符:

情况一:使用ejs.render()

var ejs = require('ejs'),users = ['geddy', 'neil', 'alex'];// 单个模板文件
ejs.render('<?= users.join(" | "); ?>', {users: users},{delimiter: '?'});
// => 'geddy | neil | alex'// 全局
ejs.delimiter = '$';
ejs.render('<$= users.join(" | "); $>', {users: users});
// => 'geddy | neil | alex'

情况二:使用ejs.renderFiler()

// 单个模板文件
// 11.ejs内容:
<? for(var i=0; i<num; i++ ) { -?><h2><?= user.name ?></h2><h2><?= user.age ?></h2>
<? } -?>// 11.js内容:
var ejs = require('ejs');ejs.renderFile('./work/lesson14/view/11.ejs',{user:{name:"wangkun",age:22,},num:2
},{rmWhitespace:true,delimiter: '?'},(err,data)=>{if(err) {console.error(err);}else {console.log(data);}
});// 输出:
<body>
<h2>wangkun</h2>
<h2>22</h2>
<h2>wangkun</h2>
<h2>22</h2>
</body>

// 全局

// 12.ejs内容:
  <$ for(var i=0; i<num; i++ ) { -$>
    <h2><$= user.name $></h2>
    <h2><$= user.age $></h2>
  <$ } -$>

// 12.js内容:
  const ejs = require('ejs');
  ejs.delimiter = '$';
  ejs.renderFile('./work/lesson14/view/12.ejs',{
    user:{
      name:"wangkun",
      age:22,
    },
    num:2
  },{rmWhitespace:true},(err,data)=>{
    if(err) {
      console.error(err);
    }else {
      console.log(data);
    }
  });
 
  // 输出:
  

  <h2>wangkun</h2>
  <h2>22</h2>
  <h2>wangkun</h2>
  <h2>22</h2>

 

转载于:https://www.cnblogs.com/kunmomo/p/11465612.html

EJS学习(二)之语法规则上相关推荐

  1. Vue学习(二)-胡子({{}})语法

    一,插值操作 这种语法叫做 Mustache 语法 中文叫做胡子的意思,两个 {{}} 长的比较像胡子,所以这样命名了 <body><div id="app"&g ...

  2. Python基础学习:类语法规则

    [类] 一.定义方式: class 类名(object): 二.调用方式: 1.类名() 2.对象 = 类名() #当一个变量 等于 一个类名()  #时它就叫对象 三.方法: 1.公有方法() #方 ...

  3. 4、JSX 基本语法规则

    JSX 基本语法规则 上一篇博文稍微说了一下 虚拟DOM 和 真实DOM 的区别,这一篇我们稍微说一下 jsx 的一些语法规则,这个是在开发中经常遇到的,今天稍微过一下. 什么是 JSX JSX 全称 ...

  4. 系统学习 TypeScript(二)——开发流程和语法规则

    前言 我们已经知道了 TypeScript 是什么,以及为什么要用 TypeScript,今天,我们就来学习怎么初步使用它. TypeScript 的使用流程 原始的 TypeScript 文件以 . ...

  5. 学习Kotlin(二)基本语法

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  6. linux python命令无反应_Python学习第164课--Linux命令行特殊符号的意义及命令的语法规则...

    [每天几分钟,从零入门python编程的世界!] 这节我们介绍Linux系统命令行中的一些特定的符号具有什么含义,以及命令行的语法规则. ●Linux命令行中特定的符号的含义 比如我登录到系统中之后, ...

  7. 【ProVerif学习笔记】3:进程宏和进程书写的语法规则

    1 进程宏 进程宏(Process Macros)用来定义子进程,因为在用ProVerif对协议进行建模时,直接一个大的主进程比较混乱,进程宏的形式为: l e t R ( x 1 : t 1 , . ...

  8. web前端学习:1分钟了解JavaScript基础语法规则

    俗话说,"无规矩不成方圆".用在计算机语言上也同样使用.每种计算机语言都有自己的语法规则,只有遵循语法规则才能写出符合要求的代码.JavaScript也不例外,在使用JavaScr ...

  9. php脚本语法格式,[PHP学习笔记][五]PHP基本语法规则

    本文主要讲解PHP代码基本的书写规范,具体的规则可以直接看示例代码更直观些. 1. PHP文件 PHP直接保存为".php"的文件,其内容格式和普通的HTML没什么区别,只是在其中 ...

最新文章

  1. 缇 、 像素 、 厘米
  2. 基于stm32的can总线彻底研究
  3. python图形化界面开发工具_图形用户界面(GUI)常见问题
  4. mysql 层_mysql三层体系
  5. 出现在海马#30524;前的c++
  6. (王道408考研操作系统)第一章计算机系统概述-第一节5:系统调用
  7. 2017.10.10 取石子游戏 失败总结
  8. 阿里、京东、美团、百度面试总结
  9. step6: item与pipeline
  10. zoj2901【DP·二进制优化】
  11. Java-static概述
  12. 初学C++遇到的引用头文件问题
  13. 摩云ktv点歌系统服务器,摩云ktv点歌服务器系统更新
  14. 点亮了中行U盾12864屏线 12液晶,附12864详细手册
  15. podman 开机自启
  16. Writeback和Writethrough区别
  17. 【FS96生物医学工程学】生物医学工程复试问题
  18. 在Linux服务器运行jar包并一直处于后台执行
  19. PHP代码审计实战之XDcms
  20. NETSCOUT宣布推出Omnis Cyber Intelligence解决方案

热门文章

  1. 常用SQL语句书写技巧-
  2. asp.net中此页的状态信息无效,可能已损坏的解决之道
  3. XCTF-Reverse:Hello,CTF
  4. 在Navicat中直接向表里添加数据
  5. JQuery Mobile 手机显示页面偏小
  6. Linux 0.11 实验环境搭建与调试
  7. 【译】The Faults and Shortcomings of the EVM
  8. 从并发视角来看智能合约(下)【渡鸦论文系列】
  9. 在區塊鏈上建立可更新的智慧合約(一)
  10. 更别致的词向量模型(一):simpler glove