EJS基本使用
基本使用
Render 渲染字符串
Compile编译字符串到模板函数(需调用才能生成html内容)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ejs</title>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<script src="ejs.js"></script>
<script>
var html = ejs.render('<%= "hello,world" %>',''); // 直接输出html
var template = ejs.compile('<%= 456 %>'); // 输出一个函数
var result = template(); // 处理之后,成为html
document.getElementById('div1').innerHTML=html;
document.getElementById('div2').innerHTML=template;
document.getElementById('div3').innerHTML=result;
</script>
</body>
</html>
hello,world
function (data) { var include = function (path, includeData) { var d = utils.shallowCopy({}, data); if (includeData) { d = utils.shallowCopy(d, includeData); } return includeFile(path, opts)(d); }; return fn.apply(opts.context, [data || {}, escapeFn, include, rethrow]); }
456
使用模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ejs</title>
</head>
<body>
<script id="users" type="text/template">
<% if (names.length) { %>
<ul>
<% names.forEach(function(name){ %>
<li><%= name%></li>
<% }) %>
</ul>
<% } %>
</script>
<script src="ejs.js"></script>
<script>
var users = document.getElementById("users").innerHTML;
var namesArr = ['zhangsan','lisi','wangwu']; // 从接口中获取
var html = ejs.render(users,{names:namesArr});
document.body.innerHTML = html;
</script>
</body>
</html>
zhangsan
lisi
wangwu
node中使用
npm install ejs
新建ejs01.js
var ejs = require("ejs");
var people = ['geddy', 'neil', 'alex'];
var html = ejs.render('<%= people.join(", "); %>', {people: people});
console.log(html);
node 执行
$ node ejs01.js
geddy, neil, alex
一个综合的例子:
新建模板ejs02.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<title><%=title%></title>
<meta charset="utf-8"/>
</head>
<body>
name:<%= userInfo.name %><br/>
age:<%= userInfo.age %><br/>
<%%= %> 使用方法:变量若包含 '<' '>' '&'等字符会被转义 :
message:<%= userInfo.message %>
<br/>
<%%- %> 使用方法:输出变量原值,不转义:
message:<%- userInfo.message %>
<%# 注释不显示 %>
<br/>
<%
if(userInfo.age > 5){
%>
5+
<%
}else{
%>
5-
<%
}
%>
</body>
</html>
新建控制器
ejs02.js
var ejs = require("ejs");
var fs = require("fs");
//var people = ['geddy', 'neil', 'alex'];
//var html = ejs.render('<%= people.join(", "); %>', {people: people});
var title="hello world";
var userInfo = {
name : "devil13th",
age : 5,
school : "THD",
message : "<div>i'm message</div>"
}
fs.readFile("ejs02.ejs","utf-8",function(err,data){
console.log(data);
console.log("========================");
var text = ejs.render(data,{title:title,userInfo:userInfo});
console.log(text);
})
console.log("finish");
这个时候执行node ejs02.js
$ node ejs02.js
finish
<!DOCTYPE html>
<html lang="en">
<head>
<title><%=title%></title>
<meta charset="utf-8"/>
</head>
<body>
name:<%= userInfo.name %><br/>
age:<%= userInfo.age %><br/>
<%%= %> 使用方法:变量若包含 '<' '>' '&'等字符会被转义 :
message:<%= userInfo.message %>
<br/>
<%%- %> 使用方法:输出变量原值,不转义:
message:<%- userInfo.message %>
<%# 注释不显示 %>
<br/>
<%
if(userInfo.age > 5){
%>
5+
<%
}else{
%>
5-
<%
}
%>
</body>
</html>
========================
<!DOCTYPE html>
<html lang="en">
<head>
<title>hello world</title>
<meta charset="utf-8"/>
</head>
<body>
name:devil13th<br/>
age:5<br/>
<%= %> 使用方法:变量若包含 '<' '>' '&'等字符会被转义 :
message:<div>i'm message</div>
<br/>
<%- %> 使用方法:输出变量原值,不转义:
message:<div>i'm message</div>
<br/>
5-
</body>
</html>
还可以继续升级,创建server_ejs02.js
var ejs = require("ejs");
var fs = require("fs");
var http = require("http");
http.createServer(function(req,res){
fs.readFile("ejs02.ejs","utf-8",function(err,data){
res.writeHead(200,{'Content-Type':'text/html'});
var title="hello world";
var userInfo = {
name : "devil13th",
age : 5,
school : "THD",
message : "<div style='border:1px solid red;'>i'm message</div>"
};
var html = ejs.render(data,{title:title,userInfo:userInfo});
res.end(html);
})
}).listen(3000);
console.log("server running ...");
执行node server_ejs02.js
$ node server_ejs02.js
server running ...
直接就可以在浏览器中访问了。
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 ...
随机推荐
- Class加载顺序
原文:https://blog.saymagic.cn/2017/07/01/class-common-question.html 类的初始化顺序是怎样的? 我们尝试从class文件中找到答案.来看这 ...
- mysql基准测试与sysbench工具
一.基准测试简介 1.什么是基准测试 数据库的基准测试是对数据库的性能指标进行定量的.可复现的.可对比的测试. 基准测试与压力测试 基准测试可以理解为针对系统的一种压力测试.但基准测试不关心业务逻辑 ...
- Python之面向对象反射
Python之面向对象反射 isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 ...
- 爬虫项目 之(一) --- urllib 和 正则re
from urllib import request,parse from time import sleep import re # 1.[数据的获取] # 封装一个函数,用于将url转化成一个请求 ...
- windows系统安装虚拟机VMware12,然后在虚拟机中安装Red Hat Enterprise Linux6操作系统
准备工作下载百度网盘: https://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98&rsv_spt=1&rsv_iq ...
- 牛客网sql练习
一建表语句 /* Navicat MySQL Data Transfer Source Server : test Source Server Version : 50717 Source Host ...
- Spring框架中 配置c3p0连接池
开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...
- [luoguP1972] [SDOI2009]HH的项链(莫队 || 树状数组 || 主席树)
传送门 莫队基础题,适合我这种初学者. 莫队是离线算法,通常不带修改,时间复杂度为 O(n√n) 我们要先保证通过 [ l , r ] 求得 [ l , r + 1 ] , [ l , r - 1 ] ...
- Java 学习(5):修饰符 运算符
目录 --- 修饰符 --- 运算符 --- 循环结构 --- 分支结构 修饰符: 修饰符用来定义类.方法或者变量,通常放在语句的最前端.如下: public class className { // ...
- [NOIP2008] 提高组 洛谷P1149 火柴棒等式
题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 加号与等号各自 ...