EJS的个人总结
什么是模板引擎?
用于Web开发的模板引擎是为了使用用户界面与业务数据(内容)分离而产生的,使用模板语法编写的模板代码通常放在具有特的格式的文档中,经过模板引擎编译之后就会生成一个标准的HTML文档。
目前市面上比较流行的模板引擎有以下几种:
- EJS -- 国内站点:https://ejs.bootcss.com/,官方站点:http://ejs.co
- Pug -- 官方站点:https://pugjs.org/
- Mustache -- 官方站点:http://mustache.github.io/
- jade -- 官方站点:http://jade-lang.com/
为什么要学习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><a href="">Hello EJS</a></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的个人总结的更多相关文章
- nodejs 返回html页面--使用 ejs 模板
nodejs 可以直接在返回中使用html标签,例如下面的格式,返回 hello world 将会使用 h1 字体. app.get('/html',function(req,res){ res.st ...
- 【nodejs笔记3】Express基本用法,和路由控制,和模板渲染ejs
1. 路由控制的工作原理 //routes/index.js中的代码//访问主页时,调用ejs模板引擎,渲染index.ejs模板文件,生成静态页面,并显示在浏览器中.router.get('/', ...
- Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问题
最近在看<Node.js开发指南>,看到使用nodejs进行web开发的时候,准备创建ejs项目遇到问题了, 书上命令为: express -t ejs microblog 可是执行后,仍 ...
- ejs模板中的四种表达式输出形式
在ejs模板中,通常会用下面四种方式在HTML中输出服务端的变量或表达式的值: 1. 直接在<%%>中写表达式或变量.这种情况通常只是用来进行表达式计算或给变量赋值,不会有任何输出,被称作 ...
- NodeJS实战:Express+Mongoose+ejs
元宵还没到,先向所有朋友拜一个晚年~~~ 文章目录: 1.组件版本号 -- --node -- --express -- --Mongoose 2.初始化项目 firstblood -- --用 ex ...
- nodejs学习笔记(2)--Express下安装模版引擎ejs
成功安装完express后,输入express -help,根据提示安装ejs(如下图): 根据提示-e实现安装ejs,注意此处有坑:之前安装的时候根据教程(node.js开发指南第五章5.2.2节) ...
- ejs模板
nodejs的模板引擎有很多, ejs是比较简单和容易上手的.常用的一些语法: 用<%...%>包含js代码 用<%=...%>输出变量 变量若包含 '<' '>' ...
- node入门 express ejs
hello.js var express = require("express"); var app = express(); app.get("/hello" ...
- 最新版EJS的include函数已支持参数传递
最新版的express中partial函数已经被移除,使用include虽然可以实现同样的效果,但是代码看起来很不爽比如 1 <%-partial("user/home",{ ...
- 如何在 ejs 模板中使用 helper function 外部函数进行特殊处理?
一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %> 通常的做法是: 使用 app.locals 来定义: app.loca ...
随机推荐
- Sitecore 8.2 数据库权限设置
在我的一个项目中,客户决定改变基础设施.在这个过程中,我得到了一些新的东西需要学习.在本文中,我将分享有关Sitecore数据库权限的经验. 在将数据库从一个服务器移动到另一个服务器时,您需要检查提供 ...
- 洛谷P5017:摆渡车——题解
https://www.luogu.org/problem/P5017 参考:https://www.luogu.org/blog/ztyluogucpp/solution-p5017 我想我大概是废 ...
- (一)将mockjs集成到VUE中后,怎样根据接口入参返回mock结果
1)安装mockjs,这一步跳过 2)在项目中建立mock模块,笔者的目录结构如下 mock模块与接口模块一一对应,有一个接口,就有一个mock 3)编写登陆模块mock接口,代码如下: import ...
- 命令源码文件——Golang
源码文件又分为三种,即:命令源码文件.库源码文件和测试源码文件,它们都有着不同的用途和编写规则. 命令源码文件:1.独立程序的入口2.属于main包,包含无参数和无结果的main函数3.main函数执 ...
- Kafka学习笔记之如何永久删除Kafka的Topic
0x00 问题描述 使用kafka-topics --delete命令删除topic时并没有真正的删除,而是把topic标记为:“marked for deletion”,导致重新创建相同名称的Top ...
- 使用httpClient 调用get,Post接口
1.httpClient 调用get接口 private async Task<IList<(int columnId, string columnName)>> GetFun ...
- Python3.x--33个保留字
查询方法也在下图:
- .net core web api 默认的模型验证
转载自 https://www.codercto.com/a/45938.html
- 设计模式 结构型 - 适配器模式 Adapter
Adapter(适配器模式) ---- 加个“适配器”以便于复用 将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景 如果 ...
- 解决kettle在两个mysql之间迁移数据时乱码的问题 和 相关报错 及参数调整, 速度优化
1. 乱码问题 编辑目标数据库的链接: 配置编码参数即可. 2. 报错 No operations allowed after statement closed. 需要调整wait_timeout: ...