Express
Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用
特性
- 提供了方便简洁的路由定义方式
- 对获取HTTP请求参数进行了简化处理
- 对模板引擎支持程度高,方便渲染动态HTML页面
- 提供了中间件机制有效控制HTTP请求
- 拥有大量第三方中间件对功能进行扩展
开始
const express = require('express')const app = express()app.listen(80)app.get('/',(req,res)=>{ // 自动设置响应内容类型 res.send({name:'cxk',age:18}) })
中间件
next
使用next继续传递请求
app.get('/',(req,res,next)=>{ req.name = 'cxk' next()})app.get('/',(req,res)=>{ res.send({name:req.name,age:18}) })
use
使用use接收任何类型方法的请求
app.use('/any',(req,res,next)=>{ res.end('ok')})
可以用作过滤器
404处理:
app.use((req,res,next)=>{ res.status(404).send('not found')})
错误处理:
app.use('/any',(req,res,next)=>{ throw Error('RuntimeException')})app.use((error,req,res,next)=>{ res.status(500).send("SERVER INTERNAL ERROR:"+error)})
当发生错误的中间件是异步函数是,需要手动捕捉错误,调用next
app.use('/any',async (req,res,next)=>{ try{ throw Error('RuntimeException') }catch(e){ next(e) }})
模块化路由
const home = express.Router()const admin = express.Router()app.use('/home',home)app.use('/admin',admin)home.get('/index',(req,res)=>{ res.send('前台首页')})admin.get('/index',(req,res)=>{ res.send('后台首页')})
参数获取
- get请求
req.query
- post请求
const bodyParser = require('body-parser')app.use(bodyParser.urlencoded({extended:false}))app.post('/',(req,res)=>{ res.send(req.body)})
- 路由参数
app.get('/:id',(req,res)=>{ res.send(req.params) // {id:1}})
静态资源处理
app.use(express.static('static'))
整合art-template
// app.use(express.static('static'))// 当渲染后缀为art的模板时,使用express-art-templateapp.engine('art',require('express-art-template'))// 设置模板目录app.set('views',path.join(__dirname,'views'))// 设置模板后缀app.set('view engine','art')app.get('/',(req,res)=>{ // 渲染模板 res.render('index',{ content:'jntm' })})
- 模板公共数据
app.locals.common = { name: 'site'}