Express

Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用

特性

开始

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('后台首页')})

参数获取

req.query
const bodyParser = require('body-parser')app.use(bodyParser.urlencoded({extended:false}))app.post('/',(req,res)=>{    res.send(req.body)})

请求:http://localhost/1

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'}