Express整个框架的核心就是中间件
express的使用过程有两种方式:
方式一:安装express-generator
安装脚手架
npm install -g express-generator
创建项目
express express-demo
安装依赖
npm install
启动项目
node bin/www
方式二:从零搭建自己的express应用结构;
npm init -y
// express本质上是一个函数:createApplication
const express = require('express')
// 创建app
const app = express();
// 监听默认路径
// get
app.get('/', (req, res, next) => {
res.end("hello express")
})
// post
app.post('/', (req, res, next) => {
res.end('hello post express')
})
// 开启监听
app.listen(8000, () => {
console.log('express服务器启动成功')
})
const express = require('express')
const app = express();
// 编写普通的中间件
// use注册一个中间件(回调函数)
app.use((req, res, next) => {
console.log('注册了01普通中间件')
res.end('hello world')
next()
})
app.use((req, res, next) => {
console.log('注册了02普通中间件')
next()
})
app.use((req, res, next) => {
console.log('注册了03普通中间件')
})
app.listen(8000, () => {
console.log('普通中间件启动成功')
})
express主要提供了两种方式:app/router.use和app/router.methods;
end方法
json方法
status方法
以使用 express.Router来创建一个路由处理程序:
user.js
const express = require('express')
const router = express.Router()
router.get('/', (req, res, next) => {
res.json(["why", "kobe", "lilei"])
})
router.get('/:id', (req, res, next) => {
res.json(`${req.params.id}用户的信息`)
})
router.post('/', (req, res, next) => {
res.json("create user success")
})
module.exports = router
// express本质上是一个函数:createApplication
const express = require('express')
const userRouter = require('./routers/users')
// 创建app
const app = express();
// 注册路由
app.use("/users", userRouter)
app.use("/products", productRouter)
// 开启监听
app.listen(8000, () => {
console.log('express路由服务器启动成功')
})
Node也可以作为静态资源服务器,并且express给我们提供了方便部署静态资源的方法;
// express本质上是一个函数:createApplication
const express = require('express')
// 创建app
const app = express();
const USERNAME_DOES_NOT_EXISTS = "USERNAME_DOES_NOT_EXISTS";
const USERNAME_ALREADY_EXISTS = "USERNAME_ALREADY_EXISTS";
app.post('/login', (req, res, next) => {
// 加入在数据中查询用户名时, 发现不存在
const isLogin = false;
if (isLogin) {
res.json("user login success~");
} else {
// res.type(400);
// res.json("username does not exists~")
next(new Error(USERNAME_DOES_NOT_EXISTS));
}
})
app.post('/register', (req, res, next) => {
// 加入在数据中查询用户名时, 发现不存在
const isExists = true;
if (!isExists) {
res.json("user register success~");
} else {
// res.type(400);
// res.json("username already exists~")
next(new Error(USERNAME_ALREADY_EXISTS));
}
});
app.use((err, req, res, next) => {
let status = 400
let message = "";
switch(err.message) {
case USERNAME_DOES_NOT_EXISTS:
message = "username does not exists~"
break;
case USERNAME_ALREADY_EXISTS:
message = "username alreday exists~"
break;
default:
message = "NOT FOUND~"
}
res.status(status)
res.json({
errCode: status,
errMessage: message
})
})
// 开启监听
app.listen(8000, () => {
console.log('express服务器启动成功')
})