Express框架(入门教程-简介-安装-路由)

 Express是基于基于 Nodejs平台,快速、开放、极简的 Web 开发框架

官网地址:Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网

express的学习重点:路由和中间件

一、简介

使用Express可以大大简化web服务器的开发。

二、安装

Express是一个第三方的框架

npm install express --save

基础运用:

//配置路由列表
cosnt express=require('express');
const app=express();
//处理逻辑
app.get("/",(req,res)=>{

})

//...

app.listen(3000,()=>{
//callback
})

三、路由

路由记录了请求和响应函数之间的映射关系.

1.路由概述

Express中路由由三部分组成:请求方法、请求路径、对应的处理函数

app.METHOD(path,handler)

2.app级路由

使用app对象,来监听前端HTTP请求的方法,以及路径,并执行响应的函数,来做出对应的响应

2.1 app级路由常用方法
  • get() 响应GET请求

  • post() 响应post请求

  • delete()

  • all() 响应所有的http请求

  • use(path,handler) 响应所有HTTP支持的请求方式,

    • path 路径 根路径

      • 示例: /demo 可以匹配所有以/demo为一级路由的路径

  • set(key,value) 对app级路由添加设置

代码示例:

app.get('/',(req,res)=>{})

app.post('/',(req,res)=>{})


app.delete('/',(req,res)=>{})

app.all('/',(req,res)=>{})

app.use('/',(req,res)=>{})

app.set("jsonp callback name","cb");//设置jsonp接口回调函数的名字

3.router级路由

我们可以通过使用express.Router()级路由来实现模块化。

使用步骤:

  • 在模块文件中引入express.Router() ----> 挂载路由 -------> 导出路由

  • 在入口文件中,使用app.use() 集成路由

代码示例:

user模块

///个人中心模块
const express=require("express");
let router=express.Router()

// 个人中心模块


//模块中配置的路由: 从二级路由开始

//  /user/list
router.get('/list',(req,res)=>{
    res.send("list")
})

router.post("/login", (req, res) => {
    res.send("登录")
})

router.post("/reg", (req, res) => {
    res.send("注册")
})
router.post("/uploadHeader", (req, res) => {
    res.send("上传头像")
})
router.post("/mfTels", (req, res) => {
    res.send("修改手机号")
})
router.post("/mfPwd", (req, res) => {
    res.send("修改密码")
})

//.....


module.exports=router

入口文件:

app.js

const app = require('express')();

// const app1=require("./category")
const cateRouter=require("./category");//导入自定义的路由模块
const userRoueter=require("./user");//导入自定义的路由模块

//使用路由模块
//use的第一个参数可以不传,默认值:  /
// app.use("/",router)
//等价于下面代码
// app.use(cateRouter)
app.use('/cate',cateRouter) //分类
app.use('/user',userRoueter)//个人中心
//..

app.get('/',(req,res)=>{
    res.send("index")
})


app.listen(3000, () => {
    console.log('running.........');
})

4. 路径正则

在Express中,路径允许使用正则

?     0个或一个
+     一个或多个
*     任意多个任意字符
.     任意字符(除了换行、终止符)
()		
$	   结尾

 代码示例:

//   /acd   /abcd
app.get("/ab?cd",(req,res)=>{})

//  abcd   /abbcd    
app.get('/ab+cd',(req,res)=>{})

//   /abcd    /abbcd  /abmmcd   
app.get('/ab*cd',(req,res)=>{})

//     /ad   /abcd
app.get('/a(bc)?d',(req,res)=>{})

//   必须以cd结尾
app.get('/ab*cd$',(req,res)=>{})

5. 动态路由(路由参数)

在express中允许在路径部分使用路径参数:

url/:参数
例如:
app.get("/login/:id",()=>{})

app.get("/login/:id?",()=>{})

代码示例:

router.get("getproducts/:id",(req,res)=>{
    let {id}=req.params;
    
    res.send('商品');
})

6. get和post参数

  • get查询参数在query取

  • get中路径参数在params

  • post参数监听data和end事件

代码示例:

//post案例
app.post("/products", (req, res) => {

    // console.log(req.query);
    // console.log(req.params);
    let arr = []
    req.on('data', chunk => {
        arr.push(chunk)
    })

    req.on('end', () => {
        console.log(Buffer.concat(arr).toString())
        // let buf=Buffer.concat(arr);
        //  buf.toString()

        res.header("Access-Control-Allow-Origin", "*")

        res.send("hello")

        // res.send({
        //     code: 200,
        //     msg: "商品数据",
        //     data: products
        // })
    })
})

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值