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


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

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

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

    一、简介

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

    二、安装

    Express是一个第三方的框架

    npm install express --save

    基础运用:

    1. //配置路由列表
    2. cosnt express=require('express');
    3. const app=express();
    4. //处理逻辑
    5. app.get("/",(req,res)=>{
    6. })
    7. //...
    8. app.listen(3000,()=>{
    9. //callback
    10. })

    三、路由

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

    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级路由添加设置

    代码示例:

    1. app.get('/',(req,res)=>{})
    2. app.post('/',(req,res)=>{})
    3. app.delete('/',(req,res)=>{})
    4. app.all('/',(req,res)=>{})
    5. app.use('/',(req,res)=>{})
    6. app.set("jsonp callback name","cb");//设置jsonp接口回调函数的名字

    3.router级路由

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

    使用步骤:

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

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

    代码示例:

    user模块

    1. ///个人中心模块
    2. const express=require("express");
    3. let router=express.Router()
    4. // 个人中心模块
    5. //模块中配置的路由: 从二级路由开始
    6. // /user/list
    7. router.get('/list',(req,res)=>{
    8. res.send("list")
    9. })
    10. router.post("/login", (req, res) => {
    11. res.send("登录")
    12. })
    13. router.post("/reg", (req, res) => {
    14. res.send("注册")
    15. })
    16. router.post("/uploadHeader", (req, res) => {
    17. res.send("上传头像")
    18. })
    19. router.post("/mfTels", (req, res) => {
    20. res.send("修改手机号")
    21. })
    22. router.post("/mfPwd", (req, res) => {
    23. res.send("修改密码")
    24. })
    25. //.....
    26. module.exports=router

    入口文件:

    app.js

    1. const app = require('express')();
    2. // const app1=require("./category")
    3. const cateRouter=require("./category");//导入自定义的路由模块
    4. const userRoueter=require("./user");//导入自定义的路由模块
    5. //使用路由模块
    6. //use的第一个参数可以不传,默认值: /
    7. // app.use("/",router)
    8. //等价于下面代码
    9. // app.use(cateRouter)
    10. app.use('/cate',cateRouter) //分类
    11. app.use('/user',userRoueter)//个人中心
    12. //..
    13. app.get('/',(req,res)=>{
    14. res.send("index")
    15. })
    16. app.listen(3000, () => {
    17. console.log('running.........');
    18. })

    4. 路径正则

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

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

     代码示例:

    1. // /acd /abcd
    2. app.get("/ab?cd",(req,res)=>{})
    3. // abcd /abbcd
    4. app.get('/ab+cd',(req,res)=>{})
    5. // /abcd /abbcd /abmmcd
    6. app.get('/ab*cd',(req,res)=>{})
    7. // /ad /abcd
    8. app.get('/a(bc)?d',(req,res)=>{})
    9. // 必须以cd结尾
    10. app.get('/ab*cd$',(req,res)=>{})

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

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

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

    代码示例:

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

    6. get和post参数

    • get查询参数在query取

    • get中路径参数在params

    • post参数监听data和end事件

    代码示例:

    1. //post案例
    2. app.post("/products", (req, res) => {
    3. // console.log(req.query);
    4. // console.log(req.params);
    5. let arr = []
    6. req.on('data', chunk => {
    7. arr.push(chunk)
    8. })
    9. req.on('end', () => {
    10. console.log(Buffer.concat(arr).toString())
    11. // let buf=Buffer.concat(arr);
    12. // buf.toString()
    13. res.header("Access-Control-Allow-Origin", "*")
    14. res.send("hello")
    15. // res.send({
    16. // code: 200,
    17. // msg: "商品数据",
    18. // data: products
    19. // })
    20. })
    21. })

  • 相关阅读:
    Linux 内存和SWAP使用
    linux 打开相机工具cheese/guvcview
    Openstack:创建实例
    企业信息化与电子商务>供应链信息流
    利用角色roles上线wordpress项目
    【Vue】把页面上的某个div转化成base64图片,并且下载到本地。vue、h5页面下载图片到本地。页面转化base64文件下载到本地
    已解决json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    为什么电容两端电压不能突变
    将Abp默认事件总线改造为分布式事件总线
    【二分图染色】ARC 165 C
  • 原文地址:https://blog.csdn.net/Autumn_Xiao/article/details/132632222