express框架
express框架
基于Node.js平台,快速、开放,极简的WEB开发框架
属于是第三方模块,需要先去下载安装
npm install express
网址:www.expressjs.com.cn
1.创建WEB服务器
express() 创建WEB服务器
listen() 设置端口
2.路由
用于监听特定的请求;
路由包含三部分:请求的方法、请求的URL、回调函数
res 响应对象
res.send() 设置响应内容并发送
res.redirect() 设置响应的重定向
res.sendFile() 设置响应的文件,注意事项:必须使用绝对路径 __dirname
req 请求对象
req.url 获取请求的URL
req.method 获取请求的方法
req.query 获取 get 传递的参数
req.params 获取params传递的参数
传参方式
|
格式
|
路由获取
|
get传递
|
http://127.0.0.1:3000/mysearch?kw=dell
|
req.query
{kw: 'dell'}
|
params传递
|
http://127.0.0.1:3000/mysearch/dell |
req.params
需要设置参数名
{kw: 'dell'}
|
post传递
|
网址中不可见
http://127.0.0.1:3000/mysearch
|
需要使用中间插件转对象
req.body
{kw:'dell'}
|
练习:添加路由(get /login),响应登录的网页login.html,点击提交向服务器发请求(get /mylogin),添加路由,监听按钮提交的请求,获取传递的参数,响应 '登录成功,欢迎:xxx'
const express = require('express')
const app = express()
app.listen(3000,()=>{
console.log('服务器已启动')
})
//路由(get /login),响应login.html文件
app.get('/login',(req,res)=>{
res.sendFile(__dirname+'/login.html')
})
//添加路由,监听按钮提交的请求(get /mylogin)
app.get('/mylogin',(req,res)=>{
//获取get传递的参数
console.log(req.query)
res.send('登录成功,欢迎: '+req.query.user)
})
<h1>用户登录</h1>
<form method="get" action="/mylogin">
用户 <input type="text" name="user">
密码 <input type="password" name="pwd">
<input type="submit">
</form>
路由中间件
需要使用中间插件将post传参转为对象
app.use(express.urlencoded({
extended:true //告诉内部是否使用第三方模块转为对象
})
|
路由器
用于管理一组路由,最终被WEB服务器所使用
路由器
1.创建路由器对象
const r = express.Router()
2.添加路由
3.暴露路由器对象
module.exports=r
|
WEB服务器引入并挂载
app.use('/分组名称',引入的路由器)
|
最终路由访问形式
http://127.0.0.1:3000/分组名称/路由的URL
|
中间件
用来拦截对服务器请求
中间件分为应用级中间件、路由级中间件、内置中间件、错误处理中间件、第三方中间件
1.应用级中间件
也称为自定义中间件,就是一个函数,一旦拦截到自动调用函数
app.use( 拦截的URL,函数 )
function 函数(req,res,next) {
next() //往后执行,可能是下一个中间件或者路由
}
|
2.路由级中间件
路由器的使用
app.use(拦截的URL,引入的路由器)
一旦拦截到以后,会到指定的路由器下查找路由
3.内置中间件
express提供的中间件,可以直接使用
1.将post传递参数转为对象
动态资源:根据传递的参数不同,响应的结果也不一样(数据库的数据)
静态资源:每次请求,响应结果都是同样的(文件)
2.托管静态资源
浏览器端如果要请求静态资源(html,css,js,图像...),不需要通过路由响应,而是自动的查找
app.use( express.static('托管的目录'))