Express简介

150 阅读2分钟

「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战」。

今天的主角是express,主要介绍express的简单运用

Express :基于Node.js平台,快速、开发极简的web开发框架

1、创建服务器

  1. 创建基本的web服务器

    //导入express
    const express = require('express')
    ​
    //创建web服务器
    const app = express()
    ​
    //启动web服务器
    app.listen(8080, ()=>{
        console.log('express server running at http://127.0.0.1')
    })
    ​
    
  2. 监听GET请求

    通过app.get()方法,监听客户端的GET请求

    app.get('url', function(req, res){
       // 设置响应头
       res.setHeader('Access-Control-Allow-Origin','*');
       //设置响应体
       res.send('Hello Ajax');
    })
    
  3. 获取URL中携带的查询参数,通过req.query对象,可以获取参数。

  4. 获取URL中的动态参数,通过req.params对象可以访问到URL中通过:匹配的动态参数

  5. 监听POST请求

    app.post('url', function(req, res){/* 处理函数 */})
    
  6. 监听所有

    app.all('url',(request, response)=>{
        // 设置响应头
        response.setHeader('Access-Control-Allow-Origin','*');
        //设置响应头
        response.setHeader('Access-Control-Allow-Headers','*');
    ​
        //JSON数据
        let data = {
            name: "LHJ"
        };
        //将数据转化为字符串
        let str = JSON.stringify(data);
        //设置响应体
        response.send(str);
    });
    

2、托管静态资源

  • express.static(),可以创建一个静态资源服务器。例如通过如下将public目录下的图片、CSS文件、Javascript文件对外开放了:

    app.use(express.static('public'))
    

    现在,你可以访问public下所有文件了,如:http://localhost:30000/images/bg.jpg

  • 挂载路径前缀

    如果想在托管的静态资源访问路径之前,挂载路径前缀,使用的方法是:

    app.use('/public', express.static('public'))
    

    现在,聂可以通过:http://localhost:30000/public/images/bg.jpg 来访问public目录下的文件

3、模块化路由

//导入express
const express = require('express')
//创建路由对象
const router = express.Router()
​
router.get('/user/:id', (req, res)=>{
    console.log(req.params);
    res.send(req.params);
})
​
router.post('/user', (req, res)=> {
    console.log(req.query);
    res.send(req.query);
})
​
//暴露路由对象
module.exports = router

引用方式:

const express = require('express')
const app = express()
//导入路由模块
const useRouter = require('./server.js')
​
//使用app.use()注册路由模块
app.use(useRouter)

4、Express中间件

Express中间件本质上就是一个function处理函数,例如:

app.get('/', function(req, res, next){
next();
})

中间件函数的形参列表中,必须包含next参数。而路由处理函数中只包含req和res。

全局中间件:

//常量mw所指向的就是一个中间件函数
const mw = function(req, res, next){
    console.log("1111")
    //把流转关系转交给下一个中间件或路由,有请求时,先执行中间件,再到下一个中间件或路由
    next()
}
//全局生效的中间件
app.use(mw)
​
//简化
app.use(function(req, res, next){
    console.log("1111")
    next()
})

多个中间件之间共享一份req和res。可以在前面中间件为req或res添加自定义属性或方法,供后面中间件或路由使用。

局部中间件:

app.get('/', mw1,mw2,..., function(req, res){
    res.send("balabala")
})

The end....继续加油!