欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

EJS学习(二)之语法规则上

发布时间:2025/3/15 javascript 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 EJS学习(二)之语法规则上 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

标签含义

  • <% %> :'脚本' 标签,用于流程控制,无输出即直接使用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学习(二)之语法规则上的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。