二十一、Node.js-EJS 模块引擎
初识 EJS 模块引擎
我们学的 EJS 是后台模板,可以把我们数据库和文件读取的数据显示到 Html 页面上面。它
是一个第三方模块,需要通过 npm 安装
https://www.npmjs.com/package/ejs
大家可以在上面的网站获取到ejs的使用说明
安装:
npm install ejs –save / cnpm install ejs --save
Nodejs 中使用:
下面使用代码简单的展示出后台数据渲染在前台页面的过程,今后会慢慢的补充其他细节
项目结构:

创建服务的00service03_ejs.js代码:
var http = require("http")
var url = require("url")
var ejs = require('ejs')
http.createServer(function (req, res) {
res.writeHead(200, {"Content-Type": "text/html;charset='utf-8'"})
var allUrl = req.url;
var path = url.parse(allUrl).pathname;
var str = '我是后台数据,将来我是从数据库读出来的'
var list =[
'1111',
'2222',
'3333'
]
var labelStr='<h2>我是html标签h2包裹的内容</h2>';
if (path == "/login") {
// 把后台(数据库)的数据渲染到模板上面
ejs.renderFile(//这里我们通过ejs.renderFile()方法将后台数据输送给前台页面
/**
* ejs.renderFile()方法一共有三个参数:
*/
//参数1:我们要输出后台数据的目标页面路径:
"views/login.ejs",//这里的login.ejs,其实就是login.html,在下面的补充内容我会补充介绍
//参数2:我们需要输出的数据,以对象的形式输出:
{
msg: str,
list: list,
labelStr:labelStr
},
//参数3:回调函数,输出数据之后我们会获取到渲染了我们后台数据的页面内容data
function (err, data) {
res.end(data)//然后我们将data输出到浏览器,我们的页面就可以展示出来了
});
} else if (path == "/register") {
res.end("register")
} else if (path == "/admin") {
res.end("admin")
}
}).listen(8000)
login.ejs代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>这是一个ejs后台模板引擎登录</h1>
<!--<%= %>输出标签(原文输出 HTML 标签)(就是后台传什么数据,我就展示什么数据,不会解析html标签-->
<h1><%=msg%>></h1>
<!--<% %>流程控制标签:里面可以书写我们的js代码逻辑-->
<%for (var i=0;i<list.length;i++){%>
<li><%=list[i]%></li>
<%}%>
<%=labelStr%>
<!--<%- %>输出标签(HTML标签会被浏览器解析)-->
<%-labelStr%>
</body>
</html>
访问页面效果:

.ejs文件补充了解:
点击下方链接:
https://www.cnblogs.com/luzhanshi/p/10769867.html
二十一、Node.js-EJS 模块引擎的更多相关文章
- Node.js的模块载入方式与机制
Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始 ...
- node.js基础模块http、网页分析工具cherrio实现爬虫
node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言 说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherri ...
- Node.js的安装以及Node.js的模块管理
索引: Node.js的安装以及Node.js的模块管理Node.js开发环境搭建以及对ES6的支持Node.js构建Vue.js项目Vue.js单文件组件的开发基于Vue.js的UI组件(Eleme ...
- Node.js之模块机制
> 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号.  2.从模块外部访问模块内的成员 2.1使用expor ...
- Node.js DNS 模块
Node.js DNS 模块用于解析域名.引入 DNS 模块语法格式如下: var dns = require("dns") 方法 序号 方法 & 描述 1 dns.loo ...
- Node.js Net 模块
Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/客户端的方法,我们可以通过以下方式引入该模块: var net = require("net") ...
随机推荐
- 关于电信4Gapn设置问题
最近买了一台美版V版的LG G3 vs985 (感觉名字挺好的985) 就是刷完官方原版系统之后没有办法上网 在网上找了很多帖子 ,最后发现是 apn没有设置(汗) 终于找到了电信4G apn的设置方 ...
- axis客户端循环访问webservice的时候只发送了几条数据就断开了的问题
原因 axis客户端访问webservice默认是使用http1.0版本的,这个版本的http不能保持长连接,应该换成http1.1版本 具体修改步骤: <?xml version=" ...
- System.Web.Mvc.Html 命名空间小计
1,Html.Action 使用指定参数调用指定子操作方法并以 HTML 字符串形式返回结果. 1 <div id="HtmlAction"> 2 3 @Html ...
- k8s podpreset 参数注入
启动apiserver时,增加 参数 --runtime-config=settings.k8s.io/v1alpha1=true kind: PodPresetapiVersion: setting ...
- Excel VBA入门(四)流程控制2-循环控制
所谓循环控制,即在循环执行一段代码,用于完成一些重复性任务. VBA中的循环控制语句主要有3种:for.while.loop.对于大多数人来说,for的使用频率最高,而我个人也觉得for是最为灵活的, ...
- 一个word小技巧
最近在进行word格式重拍的时候发现了一个有些恶心的事,怎么去匹配文档里面所有的中文呢? 后来通过网络搜索发现了答案,在word中的查找和替换中有一个选项,可以使用通配符进行匹配. 当我们使用 ([一 ...
- [hdu1823]Luck and Love(二维线段树)
解题关键:二维线段树模板题(单点修改.查询max) #include<cstdio> #include<cstring> #include<algorithm> # ...
- ChainOfResponsibilityPattern(23种设计模式之一)
参考书籍:设计模式-可复用面向对象软件基础(黑皮书) 目的:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它为止 ...
- C#中一个窗口是一个类呢,还是一个窗口类的实例呢?(转)
C#中一个窗口是一个类呢,还是一个窗口类的实例呢? 答: 没有一个人说到重点上. 一个窗口,它不是仅仅用一个类可以描述的: 首先,这个窗口的数据类型类型,是从Form类派生下来的,也就是说它的定义是一 ...
- 深入理解yield-乾颐堂
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: 1 2 3 def ad ...