zoukankan      html  css  js  c++  java
  • 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>
     

     

  • 相关阅读:
    小白日记33:kali渗透测试之Web渗透-扫描工具-Burpsuite(一)
    小白日记31:kali渗透测试之Web渗透-扫描工具-Arachni
    小白日记30:kali渗透测试之Web渗透-扫描工具-Skipfish
    小白日记29:kali渗透测试之Web渗透-扫描工具-Vega
    小白日记28:kali渗透测试之Web渗透-扫描工具-Nikto
    小白日记27:kali渗透测试之Web渗透-Http协议基础,WEB
    小白日记26:kali渗透测试之提权(六)--收集敏感信息,隐藏痕迹
    小白日记24:kali渗透测试之提权(四)--利用漏洞提权
    小白日记25:kali渗透测试之提权(五)--利用配置不当提权
    小白日记23:kali渗透测试之提权(三)--WCE、fgdump、mimikatz
  • 原文地址:https://www.cnblogs.com/kunmomo/p/11465612.html
Copyright © 2011-2022 走看看