包
项目包
全局包
包的安装:npm install 包名 -D /-g
包卸载:npm uninstall 包名
包的规范:
入口文件 index.js
package.json --包的配置
REAFME.md---包的说明文档
express
创建一个服务器
引入express模块
常见express实例
监听端口启动服务
const exp=require('express')
const app=exp()
app.listen("8080",function(){ console.log("http://127.0.0.1:8080");
})
监听请求:
app.请求方式(请求url路径,回调函数)
get请求:
app.get('/',(req,res)=>{
console.log(req.method);
})
post请求:
app.post('/',(req,res)=>{
console.log(req.method);
})
向客户端传递数据 res.send()
res.send({"name":"zhangsan"})
静态参数:url路径后面?拼接的数据
动态参数:在url路径中用冒号的方式绑定数据可以动态获取参数
路由
一种映射关系,必须含有三个部分:请求方式 请求url 处理函数
路由前缀:
可以规定访问路由前使用什么前缀
中间件
上一个程序的输出是下一个程序的输入
本质:处理函数,处理函数中必须包含next参数
next函数的作用
当上一个中件件结束后调用next函数,next的作用指向下一个中间件或者路由
定义中间件
const express=require('express')
const app=express()
const mw=(req,res,next)=>{
console.log("第一个中间件");
}
app.use(mw)//注册中间件
app.listen(80,()=>{
console.log("http://127.0.0.1:80");
})
全局中间件
const express=require('express')
const app=express()
const a=(req,res,next)=>{
console.log("第二个中间件");
next()
}
const mw=(req,res,next)=>{
console.log("第一个中间件");
next()
}
app.use(a)
app.use(mw)
app.get('/',(req,res)=>{
console.log("路由");
})
app.listen(80,()=>{
console.log("http://127.0.0.1:80");
})
多个中间件之间共用一个req,res
局部中间件
const express = require("express");
const app = express();
const mw = (req, res, next) => {
req.time = Date.now();
next();
};
const a = (req, res, next) => {
console.log("第二个中间件");
next();
};
app.get("/api",a, (req, res) => {
console.log(req.time);
});
app.listen(80, () => {
console.log("http://127.0.0.1:80");
});