express
Express是一个流行的Nodejs Web应用程序框架,用于构建灵活且可扩展的Web应用程序和API
它基于Nodejs的HTTP模块创建,简化了处理HTTP请求、响应和中间件的过程,具有以下特点
- 简洁灵活:Express提供了简单而直观的API,使得构建Web应用程序变得简单快捷
- 模块化路由:
- Express使用路由和中间件来处理HTTP请求和响应开发人员可以定义路由规则,将特定的URL路径映射到相应的处理函数
- Express还支持将路由模块化,使应用程序可以根据不同的功能或模块进行分组,提高代码的组织性和可维护性,使得多人协作开发更加便捷
- 视图引擎支持:Express可以与各种模板引擎集成,例如EJS、Pug、Handlebars等,使开发人员可以方便地生成动态的HTML页面,并将数据动态渲染到模板中
- 中间件生态系统:Express有一个庞大的中间件生态系统,可以使用各种中间件扩展和增强应用程序的功能,例如身份验证、会话管理、日志记录、静态文件服务等
使用
基础代码
可以更方便地构造restful api风格的接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import express from 'express'
const app = express()
app.use(express.json())
app.get('/get', (req, res) => { console.log(req.query) res.send('get query') })
app.get('/user/:id', (req, res) => { console.log(req.params) res.send('get id') })
app.post('/post', (req, res) => { console.log(req.body) res.send('get body') })
app.listen(11451, () => { console.log('http://localhost:11451') })
|
模块化
将全部接口写在同一个文件内的话会难以维护,进行模块化拆分能更好地组织接口
src/list.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import express from 'express'
const router = express.Router()
router.get('/get', (req, res) => { res.json([ { id: 1, name: "yajue" }, { id: 2, name: "mur" }, { id: 3, name: "kmr" } ]) })
export default router
|
src/user.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import express from 'express'
const router = express.Router()
router.post('/login', (req, res) => { res.json({ code: 200, msg: '登录成功' }) })
router.post('/register', (req, res) => { res.json({ code: 200, msg: '注册成功' }) })
export default router
|
app.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import express from 'express'
import user from './src/user.js'
import list from './src/list.js'
const app = express() app.use(express.json())
app.use('/user', user) app.use('/list', list)
app.listen(11451, () => { console.log('http://localhost:11451') })
|
中间件
可以使用中间件拓展功能,它位于请求和最终路由处理函数之间
middleware/logger.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import log4js from 'log4js'
log4js.configure({ appenders: { out: { type: 'stdout', layout: { type: 'colored' }, }, file: { filename: './logs/server.log', type: 'file' } }, categories: { default: { appenders: ['out', 'file'], level: 'debug' } } })
const logger = log4js.getLogger()
const LoggerMiddleware = (req, res, next) => { logger.debug(`[${req.method}] ${req.url}`) next() }
export default LoggerMiddleware
|
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import express from 'express'
import LoggerMiddleware from './middleware/logger.js'
import user from './src/user.js' import list from './src/list.js'
const app = express() app.use(express.json())
app.use(LoggerMiddleware)
app.use('/user', user) app.use('/list', list)
app.listen(11451, () => { console.log('http://localhost:11451') })
|