首页 > 其他分享 >Express框架总结

Express框架总结

时间:2022-12-21 19:24:01浏览次数:33  
标签:总结 Express const req 框架 res app express 中间件

express框架总结

Express安装

  1. 通过express提供的脚手架直接创建一个应用
  • 安装脚手架: npm install -g express-generator
  • 创建项目: express express-demo
  • 安装依赖: npm install
  • 启动项目: node bin/www
  • 默认的端口为 :3000

认识中间件

  • express是一个路由和中间件的web框架。express应用程序本质是一系列中间件函数的调用

认识中间件

  1. 中间件是什么
    • 中间件的本质是传递给express的一个回调函数
    • 这个回调函数接收三个参数:
      • 请求对象(request对象)
      • 响应对象(response对象)
      • next函数(在express中定义的用于执行下一个中间件的函数)
  2. 中间件可以执行哪些任务呢?
    • 执行任何代码
    • 更改请求(request) 和响应(response)对象
    • 结束请求-响应周期(返回数据)
    • 调用栈中的下一个中间件
    • 注意: 如果当前中间件中没有结束请求-响应周期,则必须调用next()将控制权传递给下一个中间件,否则,请求将被挂起

一些中间件的代码案例

  1. 创建一个普通的中间件:
const express = require('express')

const app = express()

// 注册一个中间件
// 不写next() 只会执行第一个中间件
app.use((req,res,next) => {
  console.log('注册了一个普通中间件01')
  next()
})

app.use((req,res,next) => {
  console.log('注册了一个普通中间件02')
  res.end('02')
})


app.listen('8888', () => {
  console.log('express普通中间件启动成功')
})
  1. 路径中间件:
...
app.use('/home', (req,res,next) => {
  console.log('注册了一个普通中间件01')
  res.end('hhhhhhhhhhhh')
})
...
  1. 使用multer解析form-data(文件上传)
    • 首先下载multer: npm install multer
const path = require('path')
const express = require('express')
const multer = require('multer')

const app = express()

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, './uploadImg/');
  },
  filename: (req, file, cb) => {
    cb(null, Date.now()+path.extname(file.originalname));
  }
})
const upload = multer({
  storage
})

// app.use(upload.any())

app.post('/login', (req,res,next) => {
 console.log(req.body)
 res.end('请求结束')
})

app.post('/upload', upload.array('file'), (req,res,next) => {
  console.log(req.files)
  res.end('文件上传成功')
 })


app.listen('8888', () => {
  console.log('express服务器启动成功')
})
  1. params与query传参
const express = require('express')

const app = express()


app.get('/home/:id/:name',  (req,res,next) => {
  console.log(req.params)
  res.end('params方式传参成功')
 })

 app.get('/users',  (req,res,next) => {
  console.log(req.query)
  res.end('query方式传参成功')
 })


app.listen('8888', () => {
  console.log('express服务器启动成功')
})
  1. response 数据响应
...

 app.get('/users',  (req,res,next) => {
  console.log(req.query)
  res.status(345)
  res.json(req.query)
 })
...

  1. 路由的使用
    1. users.js
const express = require('express')

const router = express.Router()

router.get('/', (req,res,next) => {
  res.json(['why', 'kobe', 'wangjian'])
})

router.get('/:id', (req,res,next) => {
  res.json(`${req.params.id}的个人信息`)
})

router.post('/', (req,res,next) => {
  res.json('create user success!')
})

module.exports = router
2. xxx.js

const express = require('express')
const useRouter = require('./router/users')

const app = express()

app.use("/users", useRouter)




app.listen('8888', () => {
  console.log('express服务器启动成功')
})
  1. 静态服务器:
const express = require('express')

const app = express()

app.use(express.static('./build'));

app.listen('8888', () => {
  console.log('express服务器启动成功')
})

应用中间件

  • body解析
    1. 在客户端发送post请求时,会将数据放到body中:
      • 客户端可以通过json方式传递:app.use(express.json())
      • 也可以通过form表单方式传递,如果解析的是application/x-www-form-urlencoded: app.use(express.urlencoded({extended: true}))

标签:总结,Express,const,req,框架,res,app,express,中间件
From: https://www.cnblogs.com/wangjian2016/p/16996959.html

相关文章

  • 框架搭建之redis(一)
    1、redis有多种集群模式:单机,主从,哨兵,集群。2、本次搭建一个集群模式。使用redis7.0,从3.0以后开始有了集群模式,但是3.0需要使用ruby完成集群搭建,5.0以后不用ruby了。3、......
  • java 实现文件夹上传(springBoot 框架)
    有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功......
  • TI工程师总结的判断ADS129x是否工作正常的方法步骤
    当大多数ADC出现无响应时,可以通过一些基本的调试技术帮助验证器件是否仍然正常工作。以下是ADS129x器件出现无响应时需要采取的一些基本步骤:为器件通电。然后探测器......
  • 2022年总结
    转眼,2022年就剩下十多天了。 倒是应了那句老话:“人生天地之间,若白驹过隙,忽然而已。” 不管你是否准备好,2022年倒计时的钟表已经敲响,最后十天,请记得好好地谢谢自己!......
  • “互帮互助”小程序开发总结
    这次小程序开发的经历让我学到了很多,下面我就将一一总结我从中学到的知识1.我学会了规范的编程。以前的我不懂编程规范,编出来的代码既不写注释,阅读性又很差,而且变量名大部......
  • Go语言使用场景 | go语言与其它开源语言比较 | Go WEB框架选型
     一、Go语言使用场景1.关于go语言2007年,受够了C++煎熬的Google首席软件工程师RobPike纠集RobertGriesemer和KenThompson两位牛人,决定创造一种新语言来取代C++,......
  • 标准 C++ 中的 string 类的用法总结
     相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来......
  • AOL开发框架:EBS功能安全性基本原理
    为了方便管理,分类维护,EBS在"用户"和"Forms"之间加了几个层次。考察如下过程:1、 "用户"如sysadmin登录,系统验证其用户名/密码2、 如果OK,系统列出其拥有的所有角色,在EBS中......
  • QCustomPlot基础教程(十三)——Qt中QCustomPlot清除已绘制的曲线方法总结(全面汇总)
    https://blog.csdn.net/didi_ya/article/details/121237553目录1、前言2、方法一——clearGraphs()3、方法二——clearPlottables()4、方法三——clear()5、方法四......
  • PXE(grub efi)部署Ubuntu18.04问题总结
    PXE(grubefi)部署Ubuntu18.04问题总结:1、HP默认只配置了第1个网卡和第1个光纤PXE启动解决:可在BIOS手动开启2、UbuntuISO要使用非live版(官网默认为live版,live多了试用......