目录
一、express框架
基于Node.js平台,快速、开放、极简的WEB开发框架
网址:www.expressjs.com.cn
安装:npm install express
- 创建WEB服务器
-
const express=require('express') //引入express模块 const app=express() //创建WEB服务器 app.listen(3000) //设置端口
-
- 路由
- 路由用于监听特定的请求;
- 包含请求的网址
- 请求的方法
- 回调函数
- 请求的对象 req
- req.url 获取请求的网址
- req.method 获取请求的方式
- req.query 获取get传递的参数
- 响应的对象res
- res.send() 设置响应的内容并发送
- res.redirect() 设置响应的重定向
- res.sendFile() 设置响应的文件并发送(文件必须使用绝对路径 __dirname)
- 路由用于监听特定的请求;
- 路由传递参数
传参方式 | 格式 | 路由中获取 |
---|---|---|
get传递 | http://127.0.0.1:3000/mysearch?kw=小米&a=1 | req.query {kw:'小米', a:1} |
post传递 | 参数在网址中不可见 http://127.0.0.1:3000/mylogin2 | 需要使用插件 req.body {user:'tao', pwd:'123456'} |
使用插件将post传参转为对象 | |
二、路由传参
- 通过网址来传递,看不到参数名,需要在路由中设置参数名
-
//http://127.0.0.1:3000/search/手机/1 app.get('/search/:kw/:a', (req,res)=>{ req.params //获取params传递的参数 })
三、路由器(用来管理路由)
- 路由器模块
- 引入express模块
- 创建路由器对象
const r=express.Router()
- 添加路由
- 暴露路由器对象
module.exports = r
- WEB服务器模块
- 引入路由器模块
- 挂载路由器,路由器下所有路由就会成为服务器一部分
- app.use('添加的前缀', 引入的路由器)
-
// 引入自定义用户路由 const routerUser = require("./routers/user"); // 使用路由 app.use("/user", routerUser);
四.中间件(插件)
用于拦截对WEB服务器的请求;
中间件分为应用级中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件
- 应用级中间件
- 也称为自定义中间件,就是一个函数,一旦拦截会自动调用这个函数
-
function fn(req,res,next){ next() 往后执行,可能是下一个中间件,或者路由 } app.use(要拦截的网址, fn)
- 路由级中间件
- 就是路由器的使用
- 当拦截到网址以后,要到指定的路由器下寻找路由
-
app.use( 要拦截的网址, 路由器 )
- 内置中间件
- express提供的中间件,可以直接使用
- 将post传参转为对象
-
app.use( express.urlencoded({ extended: true }) )
-
- 托管静态资源
- 静态资源,包含有html、css、js、图片、视频、声音…
- 托管静态资源:浏览器要请求静态资源,不需要通过路由响应文件,而是自动的到指定的目录下查找。
-
app.use( express.static('托管的目录') )
- 第三方中间件
- 都是以第三方模块的形式出现,需要先去下载安装
- 网址: http://www.codece.com/archives/173
- multer中间件(文件上传)
- 错误处理中间件
-
// 错误处理中间件 app.use((req,res,next,err)=>{ console.log(err) res.send({ code:500, msg:'服务器错误' }) })
-
app.use((err,req,res,next)=>{ return next(err) })
-
每日一句
不积跬步,无以至千里,不积小流,无以成江海。
"不把半步、一步积累起来,就不能走到千里远的地方,不把细流汇聚起来,就不能形成江河大海。 "