# ejs入门
新建项目someapp文件夹
命令行npm init -y自动生成pakcage
npm install ejs
# EJS 使用
注意:使用之前需安装包 npm install ejs。
## 常用标签
* <%= 输出数据到模板(输出是转义 HTML 标签)
* <%- 输出非转义的数据到模板
* <% 用于流程控制,无输出
* %> 一般结束标签
## 用法--新建app.js
```
constejs=require('ejs');
let arr= ['张三', '李四', '王五'];
//ejs.render(str, data, options);
console.log(ejs.render('',{usre :arr}));
// => 输出绘制后的 HTML 字符串
```
~~~
const ejs = require('ejs');
ejs.render(str, data, options);
// => 输出绘制后的 HTML 字符串
ejs.renderFile(filename, data, options, function(err, str){
// str => 输出绘制后的 HTML 字符串
});
~~~
* cache 缓存编译后的函数,需要提供 filename
* filename 被 cache 参数用做键值,同时也用于 include 语句
* context 函数执行时的上下文环境
* compileDebug 当为 false 时不编译调试语句
* client 返回独立的编译后的函数
* delimiter 放在角括号中的字符,用于标记标签的开与闭
* debug 将生成的函数体输出
* \_with 是否使用 with() {} 结构。如果为 false,所有局部数据将存储在 locals 对象上。
* localsName 如果不使用 with ,localsName 将作为存储局部变量的对象的名称。默认名称是 locals
* rmWhitespace 删除所有可安全删除的空白字符,包括开始与结尾处的空格。对于所有标签来说,它提供了一个更安全版本的 -%> (在一行的中间并不会剔除标签后面的换行符)
* escape 为 <%= 结构设置对应的转义(escape)函数。它被用于输出结果以及在生成的客户端函数中通过 .toString() 输出。(默认转义 XML)
## 输出
~~~
// 模板文件 out.ejs
<h2><%= user.name %></h2>
<h2><%- user.name %></h2>
~~~
~~~
const ejs = require('ejs');
ejs.renderFile(__dirname + '/out.ejs', {user : {name : '<span>lony</span>'}}, (err, str) => {
// str => 输出绘制后的 HTML 字符串
console.log(str);
});
~~~
## 条件
~~~
// 模板文件 if.ejs
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
~~~
~~~
const ejs = require('ejs');
ejs.renderFile(__dirname + '/if.ejs', {user : {name : 'lony'}}, (err, str) => {
console.log(str);
});
~~~
## 循环
~~~
// 模板文件 loop.ejs
<% users.forEach((user) => { %>
<%= user.id %> <%= user.name %>
<% }) %>
~~~
~~~
const ejs = require('ejs');
ejs.renderFile(__dirname + '/loop.ejs',
{users : [{id : 1, name: 'xx'}, {id : 2, name: 'yy'}]}, (err, str) => {
console.log(str);
});
~~~
# 使用模板技术响应 HTML
```
// books.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>书籍</title>
</head>
<body>
<ul>
<% books.forEach((book) => { %>
<li><%= book %></li>
<% }) %>
</ul>
</body>
</html>
```
```
const http = require('http');
const ejs = require('ejs');
// 使用模板技术响应 HTML 格式的数据
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type' : 'text/html'});
let data = {books: ['西游记', '三国演义', '水浒传', '红楼梦']};
ejs.renderFile(__dirname + '/books.ejs', data, (err, str) => {
console.log(str);
res.end(str);
});
}).listen(8888);
```
- NodeJs
- 01-万维网
- 02-CS 架构 VS BS 架构
- 03-Web 服务器访问流程
- 04-url
- 05-网络传输协议
- 06-HTTP 协议
- 07-报文
- 08-命令行界面
- 09-什么是 Node.js
- 10-环境安装及配置
- 11-JavaScript 代码运行环境
- 12-全局对象
- 13-Buffer
- 14-模块化
- 15-EventEmitter
- 16-path模块
- 17-流式操作
- 18-包
- 19-模板技术
- 20-ejs入门
- 21-express
- 01-什么是express
- 02-Hellow Express
- 03-静态资源服务
- 04-路由
- 05-模块化路由处理程序
- 06-中间件
- 07-手动实现中间件
- 08-常用内置中间件和第三方中间件
- 09-响应
- 10-获取请求参数
- 11-Express 中使用模板引擎
- 22-web存储与安全
- 01-cookie
- 02-sessionStorage
- 03-localStorage
- 04-base64
- 05-https
- 06-同源策略