Express 路由、Ejs 、静态文件托管、中间件
一、 Express 简单介绍
Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架,它提供一系 列强大的特性,帮助你创建各种 Web 和移动设备应用。
Express 官网:
- 英语官网:http://expressjs.com/
- 中文官网:http://www.expressjs.com.cn/
二、 Express 安装使用
2.1 安装:
安装 Express 框架,就是使用 npm 的命令。
npm install express --save
–save 参数,表示自动修改 package.json 文件,自动添加依赖项。
2.2 简单使用:
//1.引入 var express = require('express');
var app = express(); //2.配置路由
app.get('/', function (req, res) { res.send('Hello World!');
}); //3.监听端口
app.listen(3000,'127.0.0.1');
2.3 完整 Demo
var express=require('express'); /*引入 express*/
var app=new express(); /*实例化 express 赋值给 app*/ //配置路由 匹配 URl 地址实现不同的功能
app.get('/',function(req,res){ res.send('首页');
}) app.get('/search',function(req,res){ res.send('搜索');
}) app.get('/login',function(req,res){ res.send('登录');
}) app.get('/register',function(req,res){ res.send('注册');
}) app.listen(3000);
三、 Express 框架中的路由
路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等) 组成的,涉及到应用如何响应客户端对某个网站节点的访问
3.1 简单的路由配置
当用 get 请求访问一个网址的时候,做什么事情:
app.get("网址",function(req,res){ });
当用 post 访问一个网址的时候,做什么事情:
app.post("网址",function(req,res){});
user 节点接受 PUT 请求
app.put('/user', function (req, res) { res.send('Got a PUT request at /user');
});
user 节点接受 DELETE 请求
app.delete('/user', function (req, res) { res.send('Got a DELETE request at /user');
});
动态路由配置:
app.get("/user/:id",function(req,res){ var id = req.params["id"]; res.send(id);
});
路由的正则匹配:(了解)
app.get('/ab*cd', function(req, res) { res.send('ab*cd');
});
路由里面获取 Get 传值:
app.get('/news, function(req, res) { console.log(req.query);
});
四、 Express 框架中 ejs 的安装
使用 Express 中 ejs 的安装: npm install ejs --save
Express 中 ejs 的使用:
4.1 指定模板位置 ,默认模板位置在 views
app.set('views', __dirname + '/views');
4.2 Ejs 引入模板
<%- include (‘header.ejs’) %>
4.3 Ejs 绑定数据
<%=h%>
4.4 Ejs 绑定 html 数据
<%-h%>
4.5 Ejs 模板判断语句
<% if(true){ %> <div>true</div> <%} else{ %> <div>false</div> <%} %>
4.6 Ejs 模板中循环数据
<%for(var i=0;i<list.length;i++) { %> <li><%=list[i] %></li>
<%}%>
4.7 == Ejs 后缀修改为 Html ==
这是一个小技巧,看着.ejs 的后缀总觉得不爽,使用如下方法,可以将模板文件的后缀换成我们习惯的.html。
- 在 app.js 的头上定义 ejs:,代码如下:
var ejs = require(‘ejs’); - 注册 html 模板引擎代码如下:
app.engine(‘html’,ejs.__express); - 将模板引擎换成 html 代码如下:
app.set(‘view engine’, ‘html’); - 修改模板文件的后缀为.html。
五、 利用 Express. static 托管静态文件
1、如果你的静态资源存放在多个目录下面,你可以多次调用 express.static 中间件:
app.use(express.static('public'));
2、如果你希望所有通过 express.static 访问的文件都存放在一个“虚拟(virtual)”目 录(即目录根本不存在)下面,可以通过为静态资源目录指定一个挂载路径的方式来实现, 如下所示:
app.use('/public', express.static('public'));
现在,你就爱可以通过带有 “/public” 前缀的地址来访问 static目录下 面的文件了。
六、 Express 中间件
通俗的讲:中间件就是匹配路由之前或者匹配路由完成做的一系列的操作。中间件中如果想往下 匹配的话,那么需要写 next()
中间件的功能包括:
- 执行任何代码。
- 修改请求和响应对象。
- 终结请求-响应循环。
- 调用堆栈中的下一个中间件。
如果我的 get、post 回调函数中,没有 next 参数,那么就匹配上第一个路由,就不会往下匹 配了。如果想往下匹配的话,那么需要写 next()
Express 应用可使用如下几种中间件:
- 应用级中间件
- 路由级中间件
- 错误处理中间件
- 内置中间件
- 第三方中间件
1、应用级中间件
app.use(function(req,res,next){ /*匹配任何路由*/ //res.send('中间件'); console.log(new Date()); next(); /*表示匹配完成这个中间件以后程序继续向下执行*/
})
app.get('/',function(req,res){ res.send('根');
})app.get('/index',function(req,res){ res.send('首页');
})
2、路由中间件
app.get("/article/add", (req, res, next) => {// res.send("add添加文章")console.log("add添加文章")next()
})// 动态路由
app.get("/article/:id", (req,res) => {var id = req.params["id"]res.send("动态路由" + id)
})
3、错误处理中间件
app.get('/index',function(req,res){ res.send('首页');
})/*中间件相应 404*/
app.use(function(req,res){ //res.render('404',{}); res.status(404).render('404',{});
})
4、内置中间件
//静态服务 index.html app.use('/static',express.static("./static")); /*匹配所有的路径*/ app.use('/news',express.static("./static")); /*匹配所有的路径*/
5、第三方中间件
body-parser 中间件 第三方的 用来获取 post 提交的数据
cnpm install body-parser --save
- var bodyParser = require(‘body-parser’)
- 设置中间件
//处理 form 表单的中间件
// parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false }));
form 表单提交的数据
// parse application/json
app.use(bodyParser.json()); 提交的 json 数据的数据 - req.body 获取数据
Express 路由、Ejs 、静态文件托管、中间件相关推荐
- (三)、Express 路由、静态文件、
一.路由 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET.POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问. 每一个路由都可以有一个或者多个 ...
- Koa 学习 01 Koa 介绍和基本使用(路由、静态资源托管、中间件)
Koa 介绍 Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造,致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 官网:https://k ...
- 3 ~ express ~ 静态文件托管
静态资源文件处理 (一)设置静态资源托管目录 /* * 当 用户访问的 url 以 /public 开始 ,那么直接返回对应 __dirname + '/public' 下的文件 . 注意是双下划 ...
- Django高级管理静态文件和中间件5.1
管理静态文件 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义静态内容 STATIC_URL = '/static/' STATICFILES_DIRS = [os ...
- Django源码分析4:staticfiles静态文件处理中间件分析
django源码分析 本文环境python3.5.2,django1.10.x系列1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化, ...
- 07-Django静态文件及中间件使用
一.静态文件 简述 CSS.JS.JSON.图片.字体文件... 配置settings.py STATIC_URL='/static/' STATICFILES_DIRS = [os.path.joi ...
- express中放置静态文件
不使用模版引擎的话要直接添加html,可以使用express.static()中间件设定静态文件目录,然后将html文件放在里面,如:express默认静态文件目录为 app.use(express. ...
- 【Express】 —利用 Express 托管静态文件
[Express] -Express 静态文件托管 方法一 随便找了几张帅哥的图片 凑合着看吧 方法二
- 用Express、MySQL搭建项目(接口以及静态文件获取、文件上传等)
一.简介 本文将主要基于node.js使用express框架搭建一个后台环境,包括如何自定义项目目录.所用依赖以及中间件.路由以及模板引擎.接口数据获取以及文件上传等内容. 二.后台环境搭建 1.新建 ...
最新文章
- P1996 约瑟夫问题
- android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法
- freemarker模板最小案例实现
- 读《白帽子讲Web安全》之安全意识篇(一)
- [转]第(前)k大数问题
- 寓言故事中隐藏的10个成功秘诀
- 阿里巴巴云原生混部系统 Koordinator 正式开源
- Idea进行远程Debug
- amd为什么还用针脚_AMD千年老二的位置能改变吗?
- 学习数据库必须掌握的54条SQL查询语句
- 国企“造船”转行测试,成功拿下11K,如今谁又甘心平庸呢?
- 微信小程序企业号注册
- 服务器集群虚拟机,服务器集群虚拟机
- C#VS工程报错:CS0234 命名空间“Microsoft.VisualStudio”中不存在类型或命名空间名“VCProjectEngine(是否缺少程序集引用)
- latex 中表格怎么指定编号_有没有大侠知道怎么改latex模板里的表格标题设置呢?就是把表格编号和标题名称改到一行。。...
- Latex罗马数字(一)
- rw,rwd,rws是什么
- 高层要有事业心,中层要有进取心,基层要有责任心!
- 少儿编程课程体系需求
- 微信小程序实现蓝牙打印(图片、二维码、文字)
热门文章
- kangle服务器搭建java_linux下kangle虚拟主机-架设java空间的教程及心得
- android自定义金额输入键盘_Android 自定义控件 - 仿支付宝数字键盘
- loading gif 透明_搞笑GIF:有这样的女朋友下班哪里都不想去
- MySQL 数据库导出导入操作
- 【机器学习】逻辑斯蒂回归原理
- 生动形象的理解什么是装饰器!
- 三星+android+7.0+自动纠正单词,升级党必看!三星S/Note系列更新Android 7.0指南
- 原型设计+用户规格说明书
- OpenvSwitch实现kubernetes依赖的底层网络
- Fantasia (Tarjan+树形DP)