什么是模板引擎?

  用于Web开发的模板引擎是为了使用用户界面与业务数据(内容)分离而产生的,使用模板语法编写的模板代码通常放在具有特的格式的文档中,经过模板引擎编译之后就会生成一个标准的HTML文档。

  目前市面上比较流行的模板引擎有以下几种:

  

为什么要学习EJS?

  EJS是一套简单的模板语言,帮我们利用普通的JavaScript代码生成HTML页面。EJS没有复杂的语法规则,也没有再造一套迭代和控制语法,有的只是普通的JavaScript代码而已。

在浏览器环境中使用

  下载浏览器版本的EJS,然后是如HTML页面即可。

  下载地址:https://github.com/mde/ejs/releases/latest

  

<script src="ejs.js"></script>
<script>
  var people = ['geddy', 'neil', 'alex'],
      html = ejs.render('<%= people.join(", "); %>', {people: people});
</script>

在Node环境中使用

  使用npm将EJS安装到当前项目中

npm install ejs --save-prod

  将使用的EJS模板语法写模板带和一些要展示到页面的数据作为参数传递给EJS提供的编译方法,最后输出HTML。 

const ejs = require('ejs');

// 要展示到页面中数据
const colors = ['red', 'green', 'blue']; // 使用 EJS 语法编写的模板
const template = `
    <ul>         <% colors.forEach((value, index) => { %>
            <li><%= value %></li>
        <% }) %>
    </ul>
` // HTML代码 = EJS模板 + 数据
const html = ejs.render(template, {colors});

EJS模板标签

  • <% 脚本标签,用于书写流程控制语句(条件语句,循环语句),不输出任何内容。不能嵌套 HTML 代码,如需嵌套 HTML 代码,需要把流程控制语句断开
const ejs = require('ejs');
// 要展示到页面中数据
const colors = ['red', 'green', 'blue'];
// 使用 EJS 语法编写的模板
const template = `
<ul>
<% colors.forEach((value, index) => { %>
<li><%= value %></li>
<% }) %>
</ul>
`
// <% %> 标签用于书写流程控制语句(条件语句,循环语句),不能嵌套 HTML 代码,如需嵌套 HTML 代码,需要把流程控制语句断开,如上所示:
const html = ejs.render(template, {colors});
console.log(html)
  • <%= 将数据输出到模板(如果输出的数据是HTML,则会被转义)
const ejs = require('ejs');
// 要展示到页面中数据
const value1 = 'Hello EJS';
const value2 = '<a href="">Hello EJS</a>';
// value2 的值在编译后会被转义成如下形式:
// <h1>&lt;a href=""&gt;Hello EJS&lt;/a&gt;</h1>
// 使用 EJS 语法编写的模板
const template = `<h1><%= value %></h1>`;
// HTML代码 = EJS模板 + 数据
const html = ejs.render(template, {value: value2});
console.log(html)
  • <%- 将数据输出到模板(数据不会被转义)
const ejs = require('ejs');
// 要展示到页面中数据
const value1 = 'Hello EJS';
const value2 = '<a href="">Hello EJS</a>';
// value2 的值在编译时不会被转义:
// <h1><a href="">Hello EJS</a></h1>
// 使用 EJS 语法编写的模板
const template = `<h1><%- value %></h1>`;
// HTML代码 = EJS模板 + 数据
const html = ejs.render(template, {value: value2});
console.log(html)
  • <%# EJS模板提供的注释方式,不会被作为模板内容编译输出
const ejs = require('ejs');
// 要展示到页面中数据
const colors = ['red', 'green', 'blue'];
// 使用 EJS 语法编写的模板
const template = `
<!-- EJS 模板中的 HTML 注释,会被作为模板内容编译输出 -->
<%# EJS 模板提供的注释方法,不会被作为模板内容编译输出 %>
<ul>
<% colors.forEach((value, index) => { %>
<li><%= value %></li>
<% }) %>
</ul>
`
const html = ejs.render(template, {colors});
console.log(html)
  • JS 代码执行之后会留下一些不必要的空格和换行
    <%_ 可以帮我们删除代码前面多余的空白
     _%> 可以帮我们删除代码后面多余的空白
    const ejs = require('ejs');
    // 要展示到页面中数据
    const greeting = 'Hello EJS';
    // 使用 EJS 语法编写的模板
    const template = `
    Beginning <%_ var greeting = 'Hello' + 'World' %>ending
    Beginning<% var greeting = 'Hello' + 'World' %> ending
    Beginning <%_ var greeting = 'Hello' + 'World' _%> ending
    `
    // JS 代码执行之后会留下一些不必要的空格和换行
    // <%_ 可以帮我们删除代码前面多余的空白
    // _%> 可以帮我们删除代码后面多余的空白
    const html = ejs.render(template, {greeting});
    console.log(html)

EJS的个人总结的更多相关文章

  1. nodejs 返回html页面--使用 ejs 模板

    nodejs 可以直接在返回中使用html标签,例如下面的格式,返回 hello world 将会使用 h1 字体. app.get('/html',function(req,res){ res.st ...

  2. 【nodejs笔记3】Express基本用法,和路由控制,和模板渲染ejs

    1. 路由控制的工作原理 //routes/index.js中的代码//访问主页时,调用ejs模板引擎,渲染index.ejs模板文件,生成静态页面,并显示在浏览器中.router.get('/', ...

  3. Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问题

    最近在看<Node.js开发指南>,看到使用nodejs进行web开发的时候,准备创建ejs项目遇到问题了, 书上命令为: express -t ejs microblog 可是执行后,仍 ...

  4. ejs模板中的四种表达式输出形式

    在ejs模板中,通常会用下面四种方式在HTML中输出服务端的变量或表达式的值: 1. 直接在<%%>中写表达式或变量.这种情况通常只是用来进行表达式计算或给变量赋值,不会有任何输出,被称作 ...

  5. NodeJS实战:Express+Mongoose+ejs

    元宵还没到,先向所有朋友拜一个晚年~~~ 文章目录: 1.组件版本号 -- --node -- --express -- --Mongoose 2.初始化项目 firstblood -- --用 ex ...

  6. nodejs学习笔记(2)--Express下安装模版引擎ejs

    成功安装完express后,输入express -help,根据提示安装ejs(如下图): 根据提示-e实现安装ejs,注意此处有坑:之前安装的时候根据教程(node.js开发指南第五章5.2.2节) ...

  7. ejs模板

    nodejs的模板引擎有很多, ejs是比较简单和容易上手的.常用的一些语法: 用<%...%>包含js代码 用<%=...%>输出变量 变量若包含 '<' '>' ...

  8. node入门 express ejs

    hello.js var express = require("express"); var app = express(); app.get("/hello" ...

  9. 最新版EJS的include函数已支持参数传递

    最新版的express中partial函数已经被移除,使用include虽然可以实现同样的效果,但是代码看起来很不爽比如 1 <%-partial("user/home",{ ...

  10. 如何在 ejs 模板中使用 helper function 外部函数进行特殊处理?

    一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %> 通常的做法是: 使用 app.locals 来定义: app.loca ...

随机推荐

  1. Background Suppression Network for Weakly-supervised Temporal Action Localization [Paper Reading]

    研究内容:弱监督时域动作定位 结果:Thumos14 mAP0.5 = 27.0 ActivityNet1.3 mAP0.5 = 34.5 从结果可以看出弱监督这种瞎猜的方式可以PK掉早些时候的一些全 ...

  2. Github 上的个人项目开源心得

    原文链接 https://elfgzp.cn/2019/12/09/gortal-site-project 由于最近在 Github 发了一个个人开源项目 - 「gortal」一个使用 Go 语言开发 ...

  3. FPGA 开发板入手途径有哪些呢?

    买到一块 FPGA 开发板,你如何入手呢? 根据博主的经验,你可以通过如下途径来学习: 1.如果你是淘宝上买的,那么可以在淘宝上搜索你的开发板(一般 FPGA 开发板生厂商在淘宝上卖都会附带教程,如米 ...

  4. Python批量更改文件名

    一.问题在处理文件或者一些其他信息的时候我们需要更改文件名,那么我们可以写一个程序来修改这些文件名,以减少我们重复的做一件事. 二.解决本次使用的Python,利用的是Python中的OS模块,具体操 ...

  5. HDU校赛 | 2019 Multi-University Training Contest 6

    2019 Multi-University Training Contest 6 http://acm.hdu.edu.cn/contests/contest_show.php?cid=853 100 ...

  6. 【题解】Luogu P2447 [SDOI2010]外星千足虫

    原题传送门 根据题意,题目给的每个操作就相当于异或上选中的那几只虫子的足数(mod 2)等于0/1 这是一个异或方程组,珂以用高斯消元解出每个虫子的足数(mod 2).所需最小次数或判断有多解 但是看 ...

  7. CorelDRAW 学习笔记(一)

    基本图形 等比例图形:按住 Ctrl 拖拽 以中心为起点等比例缩放:按住 Shift 拖拽 快捷键: 矩形:F6 圆形:F7 多边形:Y 双击矩形工具,可以直接创建一个页面大小的矩形对象: 对象对齐 ...

  8. winform+cefSharp实现窗体加载浏览器

    1:新建winform项目 2:安装cefSharp 3:配置管理器更改为X86 4:添加引用 using CefSharp; using CefSharp.WinForms; 5:项目启动,打开网页 ...

  9. Python面向对象封装案例

    01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 ...

  10. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...