Express框架(基础部分、路由和中间件)

21 篇文章 2 订阅
订阅专栏
本文详细介绍了Express框架,包括其作为Node.jsWeb开发框架的基本概念、创建Web服务器、监听HTTP请求、响应内容、处理URL参数、托管静态资源的方法。还讨论了安装和使用nodemon来自动化项目重启,以及路由和中间件的概念、用法和分类,强调了中间件在处理请求流中的作用。
摘要由CSDN通过智能技术生成

目录

一、认识Express框架 

1.什么是Express框架

 2.Express框架可以做什么

二、使用Express框架

1.创建基本的web服务器

2.监听GET请求

3.监听POST请求

4.把内容响应给客户端

5.获取URL中携带的查询参数

6.获取URL中的动态参数

三、使用Express托管静态资源

1.express.static()

2.托管多个静态资源目录

3.挂载路径前缀

4.示例

四、安装nodemon

1.为什么要使用 nodemon

2.安装nodemon

3.使用 nodemon

五、路由

1.路由的概念

(1)什么是路由

(2)Express 中的路由

(3)Express中的路由的例子

(4)路由的匹配过程

2.路由的使用

(1)最简单的用法

(2)模块化路由

六、中间件

1.认识中间件

(1)什么的中间件

(2)显示生活中的例子

 (3)Express 中间件的调用流程

(4)Express 中间件的格式

(5)next函数的作用

2.Express 中间件的初体验

(1)定义中间件函数

 (2)全局生效的中间件

(3)中间件的作用

(4)局部生效的中间件

(5)中间件的注意事项

3.中间件的分类

(1)应用级别的中间件

(2)路由级别的中间件

(3)错误级别的中间件

(4)Express 内置的中间件

(5)第三方的中间件

4.自定义中间件


一、认识Express框架 

1.什么是Express框架

官方给出的概念: Express 是基于 Node.js 平台快速、开放、极简Web 开发框架

通俗的理解: Express 的作用和 Node,js 内置的 http 模块类似,是专门用来创建 Web 服务器的。

Express 的本质:就是一个npm上的第三方包,提供了快速创建 Web 服务器的便捷方法。

Express框架的中文官网: http:// http://www.expressjs.com.cn/

 2.Express框架可以做什么

对于前端程序员来说,最常见的两种服务器,分别是:

  • Web 网站服务器: 专门对外提供 Web 网页资源的服务器。
  • API 接口服务器: 专门对外提供 API 接口的服务器。

使用 Express,我们可以方便、快速的创建 Web 网站的服务器或API 接口的服务器。

二、使用Express框架

1.创建基本的web服务器

// 1.导入 express
const express = require('express')
// 2.创建 web 服务器
const app = express()
// 3.调用 app.listen(端口号,启动成功后的回调函数),启动服务器
app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1')
})

2.监听GET请求

通过app.get()方法,可以监听客户端的 GET 请求,具体的语法格式如下:

// 参数1:客户端请求的URL地址
// 参数2:请求对应的处理函数
//    req:请求对象(包含了与请求相关的属性和方法)
//    res:响应对象(包含了响应相关的属性和方法)
app.get('请求URL',function(req,res){/* 处理函数 */})

3.监听POST请求

通过 app.post()方法,可以监听客户端的 POST 请求,具体的语法格式如下:

// 参数1:客户端请求的URL地址
// 参数2:请求对应的处理函数
//    req:请求对象(包含了与请求相关的属性和方法)
//    res:响应对象(包含了响应相关的属性和方法)
app.post('请求URL',function(req,res){/* 处理函数 */})

4.把内容响应给客户端

通过 res.send() 方法,可以把处理好的内容,发送给客户端:

app.get('/user',(req,res)=>{
    // 向客户端发送 JSON 对象
    res.send({name:'zs',age:20,gender:'男'})
})

app.post('/user',(req,res)=>{
    // 向客户端发送文本内容
    res.send('请求成功')
})

5.获取URL中携带的查询参数

通过 req.query 对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数:

app.get('/',(req,res)=>{
    // req.query 默认是一个空对象
    // 客户端使用 ?name=zs&age=20 这种查询字符串形式,发送到服务器的参数
    // 可以通过 req.query 对象访问到,例如:
    // req.query.name req.query.age
    console.log(res.query)
})

6.获取URL中的动态参数

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

// URL 地址中,可以通过:参数名的形式,匹配动态参数值
app.get('/user/:id',(req,res)=>{
    // req.params 默认是一个空对象
    // 里面存放着通过:动态匹配到的参数值
    console.log(req.params)
})

三、使用Express托管静态资源

1.express.static()

express 提供了一个非常好用的函数,叫做 express.static(),通过它,我们可以非常方便地创建一个静态资源服务器例如,通过如下代码就可以将 public 目录下的图片、CSS 文件、JavaScript 文件对外开放访问了:

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

现在,就可以访问 public 目录中的所有文件了:

  • http://localhost:3000/css/style.css
  • http://localhost:3000/images/bg.jpg
  • http://localhost:3000/js/login.js

注意: Express在指定的静态目录中查找文件,并对外提供资源的访问路径。因此,存放静态文件的目录名不会出现在 URL 中

2.托管多个静态资源目录

如果要托管多个静态资源目录,请多次调用 express.static() 函数:

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

访问静态资源文件时,express.static() 函数会根据目录的添加顺序查找所需的文件。

3.挂载路径前缀

如果希望在托管的静态资源访问路径之前,挂载路径前缀,则可以使用如下的方式:

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

现在,你就可以通过带有 /public 前缀地址来访问 public 目录中的文件了:

  • http://localhost:3000/public/images/kitten.jpg
  • http://localhost:3000/public/css/style.css
  • http://localhost:3000/public/js/app.js

4.示例

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

// 调用express.static() 方法,对外提供静态资源
// 先找第一个,再找后面的,要是再第一个找到了,就不会往后面再找

app.use('/aa',express.static('./taobao'))
app.use(express.static('./xuechenwang'))

app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1');
})

四、安装nodemon

1.为什么要使用 nodemon

在编写调试 Node.js 项目的时候,如果修改了项目的代码,则需要频繁的手动 close 掉,然后再重新启动,非常繁琐。

现在,我们可以使用 nodemon  https://www.npmjs.com/package/nodemon 这个工具,它能够监听项目文件的变动,当代码被修改后,nodemon 会自动帮我们重启项目,极大方便了开发和调试。

2.安装nodemon

 在终端中,运行如下命令,即可将 nodemon 安装为全局可用的工具:

npm install -g nodemon

3.使用 nodemon

node app.js
// 将上面的终端命令,替换为下面的终端命令,即可实现自动重启项目效果
nodemon app.js

五、路由

1.路由的概念

(1)什么是路由

一义上来讲,路由就是映射关系

(2)Express 中的路由

在Express 中,路由指的是客户端的请求服务器处理函数之间的映射关系。

Express 中的路由分3 部分组成,分别是请求的类型请求的 URL 地址处理函数,格式如下:

app.METHOD(PATH,HANDLER)

(3)Express中的路由的例子

// 匹配 GET 请求,且请求 URL 为 /
app.get('/',function(req,res){
    app.send('Hello World!')
})

// 匹配 POST 请求,且请求 URL 为 /
app.post('/',function(req,res){
    app.send('Got a POST request')
})

(4)路由的匹配过程

每当一个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调用对应的处理函数。

在匹配时,会按照路由的顺序进行匹配,如果请求类型请求的 URL 同时匹配成功,则 Express 会将这次请求,转交给对应的function函数进行处理。

 路由匹配的注意点:

  1. 按照定义的先后顺序进行匹配
  2. 请求类型请求的URL同时匹配成功,才会调用对应的处理函数。

2.路由的使用

(1)最简单的用法

在Express中使用路由最简单的方式,就是把路由挂载到app 上,示例代码如下:

// 1.首先初始化文件夹 npm init -y
// 2.安装express npm i express@4.17.1

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

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

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

app.listen(80,()=>{
    console.log('http://127.0.0.1');
})

(2)模块化路由

为了方便对路由进行模块化的管理,Express 不建议将路由直接挂载到 app 上,而是推荐将路由抽离为单独的模块

将路由抽离为单独模块的步骤如下:

  1. 创建路由模块对应的.js文件
  2.  用 express.Router() 函数创建路由对象
  3. 向路由对象上挂载具体的路由
  4. 使用 module.exports 向外共享路由对象
  5. 使用app.use()函数注册路由模块

a.首先创建路由模块(router.js)

// 1.导入express
const express = require('express')
//  2.创建路由对象
const router = express.Router()
// 3.挂载具体的路由
router.get('/user/list',(req,res)=>{
    res.send('Get user list')
})

router.post('/user/add',(req,res)=>{
    res.send('Add new user.')
})

// 4.向外导出路由对象
module.exports=router

b.路由注册模块(main.js)

const express = require('express')
const app = express()
// 1.导入路由模块
const router = require('./router')
//  2.注册路由模块
app.use(router)

// app.use()的作用就是注册一个全局的中间件
app.listen(80,()=>{
    console.log('http://127.0.0.1');
})

当然也可以为路由模块添加前缀:

const express = require('express')
const app = express()
// 1.导入路由模块
const router = require('./03.router')
//  2.使用 app.use()注册路由模块,并统添加统一访问前缀 /api
app.use('/api',router)

// app.use()的作用就是注册一个全局的中间件
app.listen(80,()=>{
    console.log('http://127.0.0.1');
})

六、中间件

1.认识中间件

(1)什么的中间件

中间件 (Middleware ),特指业务流程中间处理环节

(2)显示生活中的例子

在处理污水的时候,一般都要经过三个处理环节,从而保证处理过后的废水,达到排放标准。

 (3)Express 中间件的调用流程

当一个请求到达 Express 的服务器之后,可以连续调用多个中间件,从而对这次请求进行预处理

(4)Express 中间件的格式

Express 的中间件,本质上就是一个 function 处理函数,Express 中间件的格式如下 :

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

(5)next函数的作用

next 函数是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件路由

2.Express 中间件的初体验

(1)定义中间件函数

// 定义一个最简单的中间件函数
const mw = function(req,res,next){
    console.log('这是个最简单的中间件函数');
    // 把流转关系交给下一个中间件或路由
    next()
}

 (2)全局生效的中间件

客户端发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。

通过调用 app.use(中间件函数),即可定义一个全局生效的中间件,示例代码如下:

// 定义一个最简单的中间件函数
const mw = function(req,res,next){
    console.log('这是个最简单的中间件函数');
    // 把流转关系交给下一个中间件或路由
    next()
}
// 将 mw 注册为全局生效的中间件
app.use(mw)

全局中间件的简化形式: 

// 定义全局中间件函数的简化形式
app.use((req,res,next)=>{
    console.log('这是最简单的中间件函数');
    next()
})

 定义多个全局中间件 :

可以使用 app.use() 连续定义多个全局中间件。客户端请求到达服务器之后,会按照中间件定义的先后顺序依次进行调用,示例代码如下:

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

// 定义第一个全局中间件
app.use((req,res,next)=>{
    console.log('调用了第一个全局中间件');
    next()
})
// 定义第二个全局中间件
app.use((req,res,next)=>{
    console.log('调用了第二个全局中间件');
    next()
})
// 定义一个路由
app.get('/user',(req,res)=>{
    res.send('User page')
})
app.listen(80,()=>{
    console.log('http://127.0.0.1');
})

​​​​​​​

(3)中间件的作用

多个中间件之间,共享同一份 reqres。基于这样的特性,我们可以在上游的中间件中,统一为 req 或 res 对象添加自定义属性方法,供下游的中间件或路由进行使用。

示例代码:

// 导入express模块
const express = require('express')
// 创建服务器实例
const app = express()

// 定义全局中间件函数的简化形式
app.use((req,res,next)=>{
    // 获取请求到达服务器的时间
    const time = Date.now()
    // 为 req 挂载自定义属性,从而把时间共享给后面的路由
    req.startTime = time
    next()
})

app.get('/',(req,res)=>{
    res.send('Home page'+req.startTime)
})

app.get('/user',(req,res)=>{
    res.send('User page'+req.startTime)
})

// 监听服务器80端口
app.listen(80,()=>{
    console.log('http://127.0.0.1');
})

(4)局部生效的中间件

不使用 app.use() 定义的中间件,叫做局部生效的中间件,示例代码如下:

const express = require('express')
const app = express()
// 1.定义中间件函数
const mw1 = (req,res,next)=>{
    console.log('调用了局部生效的中间件');
    next()
}
// 2.创建路由
app.get('/',mw1,(req,res)=>{
    res.send('Home page')
})

app.get('/user',(req,res)=>{
    res.send('User page')
})

app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1');
})

定义多个局部中间件:

const express = require('express')
const app = express()
// 1.定义中间件函数
const mw1 = (req,res,next)=>{
    console.log('调用了第一个局部生效的中间件');
    next()
}
const mw2 = (req,res,next)=>{
    console.log('调用了第二个局部生效的中间件');
    next()
}
// 方式一
// app.get('/',mw1,mw2,(req,res)=>{
//     res.send('Home page')
// })

// 方式二
app.get('/',[mw1,mw2],(req,res)=>{
    res.send('Home page')
})

app.get('/user',(req,res)=>{
    res.send('User page')
})

app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1');
})

(5)中间件的注意事项

  1. 一定要在路由之前注册中间件
  2. 客户端发送过来的请求,可以连续调用多个中间件进行处理
  3. 执行完中间件的业务代码之后,不要忘记调用 next() 函数
  4. 为了防止代码逻辑混乱,调用 next() 函数后不要再写额外的代码
  5. 连续调用多个中间件时,多个中间件之间,共享 req 和 res 对象

3.中间件的分类

为了方便大家理解记忆中间件的使用,Express 官方把常见的中间件用法,分成了 5 大类,分别是:

  1. 应用级别的中间件
  2. 路由级别的中间件
  3. 错误级别的中间件
  4. Express 内置的中间件
  5. 第三方的中间件

(1)应用级别的中间件

通过 app.use()app.get() 或 app.post()绑定到 app 实例上的中间件,叫做应用级别的中间件,代码示例如下:

// 应用级别的中间件 (全局中间件)
app.use((req,res,next)=>{
    next()
})

//应用级别的中间件 (局部中间件)
app.get('/',mw1,(req,res)=>{
    res.send('Home page')
})

(2)路由级别的中间件

绑定到express.Router() 实例上的中间件,叫做路由级别的中间件。它的用法和应用级别中间件没有任何区别。只不过,应用级别中间件是绑定到 app 实例上,路由级别中间件绑定到 router 实例上,代码示例如下:

const express = require('express')
const app = express()
const router = express.Router()

// 路由级别的中间件
router.use(function(req,res,next){
    console.log('Time:',Date.now())
    next()
})

app.use('/',router)

(3)错误级别的中间件

错误级别中间件的作用:专门用来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题。

格式:错误级别中间件的 function 处理函数中,必须有 4 个形参,形参顺序从前到后,分别是(err, reg, res,next)。

// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例
const app = express()
// 1.定义一个路由
app.get('/',(req,res)=>{
    // 1.1人为制造错误
    throw new Error('服务器内部发生了错误')
    res.send('Home page')
})

// 2.定义错误级别中间件,捕获整个项目的异常的错误,从而防止程序的崩溃
app.use((err,req,res,next)=>{
    console.log('发生了错误'+err.message);
    res.send('Error:'+err.message)
}) 

// 调用 app.listen 方法,指定端口号并启动web服务器
app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1');
})

注意:错误级别中间件,必须注册在所有路由之后

(4)Express 内置的中间件

自Express 4.16.0 版本开始,Express 内置了3 个常用的中间件,极大的提高了 Express 项目的开发效率和体验:

  1. express.static 快速托管静态资源的内置中间件,例如: HTML 文件、图片、CSS 样式等(无兼容性)
  2. express.json 解析JSON 格式的请求体数据(有兼容性,仅在 4.16.0+ 版本中可用)
  3. express.urlencoded 解析 URL-encoded 格式的请求体数据(有兼容性, 仅在 4.16.0+ 版本中可用)
const express = require('express')
const app = express()

// 注意:除了错误级别的中间件,其他的中间件,必须在路由之前进行配置
// 通过express.json()这个中间件,解析表单的json格式数据
app.use(express.json())
// 通过express.urlencoded()这个中间件,来解析表单的url-encoded格式的数据
app.use(express.urlencoded())

app.post('/user',(req,res)=>{
    // 在服务器中,可以使用req.body这个属性,来接收客户端发送过来的请求体数据
    // 默认情况下,如果不配置解析表单数据的中间件,则req.body默认为undefined
    console.log(req.body);
    res.send('ok')
})

app.post('/book',(req,res)=>{
    // 服务器端,可以通过req,body来获取json格式的表单数据和url-encoded格式的数据
    console.log(req.body);
    res.send('ok')
})

app.listen(80,()=>{
    console.log('express server running at http://127.0.0.1')
})

(5)第三方的中间件

非 Express 官方内置的,而是由第三方开发出来的中间件,叫做第三方中间件。在项目中,大家可以按需下载配置第三方中间件,从而提高项目的开发效率。

例如:在express@4.16.0之前的版本中,经常使用 body-parser 这个第三方中间件,来解析请求体数据。使用步骤如下:

  1.  运行 npm install body-parser 安装中间件
  2. 使用 require 导入中间件
  3. 调用 app.use() 注册并使用中间件

4.自定义中间件

模拟一个类似于 express.urlencoded 这样的中间件来解析 POST 提交到服务器的表单数据。

实现步骤:

  1. 定中间件
  2. 监听req的 data事件
  3. 监听req的end 事件
  4. 使用querystring模块解析请求体数据
  5. 将解析出来的数据对象挂载为 req.body
  6. 将自定义中间件封装为模块
const express = require('express')
const app = express()
const qs = require('querystring')

// 解析表单数据的中间件
app.use((req,res,next)=>{
    // 定义中间件具体的业务逻辑
    let str = ''
    // 监听req的data事件
    req.on('data',(chunk)=>{
        str+=chunk
    })
    // 监听req的end事件
    req.on('end',()=>{
        const body = qs.parse(str)
        req.body=body
        next()
    })
})

app.post('/user',(req,res)=>{
    console.log(req.body);
    res.send('ok')
})

app.listen(80,()=>{
    console.log('Express server runing at http://127.0.0.1');
})

进行模块化封装:

parser.js

const qs = require('querystring')

const bodyparser = (req,res,next)=>{
    // 定义中间件具体的业务逻辑
    let str = ''
    // 监听req的data事件
    req.on('data',(chunk)=>{
        str+=chunk
    })
    // 监听req的end事件
    req.on('end',()=>{
        const body = qs.parse(str)
        req.body=body
        next()
    })
}

module.exports = bodyparser

main.js

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

// 1.导入封装好的中间件
const customBodyParser = require('./parser')
// 2.将自定义的中间件函数,注册为全局可用的中间件函数
app.use(customBodyParser)

app.post('/user',(req,res)=>{
    console.log(req.body);
    res.send('ok')
})

app.listen(80,()=>{
    console.log('Express server runing at http://127.0.0.1');
})

Express框架
thwr1881的博客
07-24 2525
Express框架
Express路由中间件及CORS
zilin_taku的博客
09-20 552
客户端在请求CORS接口时,根据请求方式和请求头的不同,可以将CORS的请求分为两大类。当一个请求到达Express的服务器之后,可以连续调用多个中间件,从而对这次请求进行。中间件(Middleware ) ,特指。,当代码被修改后,nodemon会。,极大方便了开发和调试。使用nodemon (必须包含next参数。
express框架
weixin_34107739的博客
07-16 281
前面的话   Express是一个简洁、灵活的 node.js Web 应用开发框架, 它提供一系列强大的特性,帮助开发者创建各种 Web 和移动设备应用。本文将详细介绍express框架   概述   官网对Express的描述,它是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架。优点是易上手、高性能、扩展性强   1、易上手:nodejs最初就是为了开发高性能w...
Express 框架
最新发布
2401_87288893的博客
09-21 858
res.send(‘我是主页’)})res.send(‘我是添加’)})//当用户访问地址与以上路由均不匹配时 进入下面的路由 因为下面会匹配任何路由res.status(404).send(‘你访问的地址不存在’)})})错误处理中间件程序中有两类错误代码错误,这个在开发调试阶段就可以解决掉运行时错误:程序运行时才可能出现的错误,如读取的文件不存在,连接数据库时数据库服务没有 启动,这类错误的发生与我们的代码没有关系。
Node.js17 Express框架
mxy1234的博客
09-21 1325
概述 Express是目前最流行的基于Node.js的Web开发框架,可以快速地搭建一个完整功能的网站。 Express上手非常简单,首先新建一个项目目录,假定叫做hello-world。 $ mkdir hello-world 进入该目录,新建一个package.json文件,内容如下。 { "name": "hello-world", "desc
EXPRESS框架
mantou_riji的博客
07-07 2997
express是一款基于Node.js平台,快速、开放、极简的web开发框架。官网:https://www.expressjs.com.cn/express是node的第三方框架 初始化: 安装: 使用的时候引入即可:之前都是用 向前端页面写数据,但是比较麻烦,一般情况下我们还需定义 ,还需要注意返回的书html片段,页面还是json数据,比较麻烦。 EXPRESS框架直接将这些内容封装成,我们可以直接将数据进行返回,比较方便。 处理路由 固定路由 表示可以匹配 和 路径 是一个占位符 表
浅探express路由中间件的实现
01-20
在Node.js的世界里,Express框架扮演着至关重要的角色,它为构建Web应用程序提供了一个简洁而强大的基础。本文将深入探讨Express中的路由中间件机制,这两个特性是理解Express工作原理的关键。 1. **Express框架...
nodejs开发——express路由中间件
10-20
在Node.js开发中,Express框架是构建Web应用的常用工具,尤其在处理HTTP请求和响应时,路由中间件扮演着至关重要的角色。本篇文章将深入探讨Express中的这两个核心概念。 **路由** 路由Express应用的核心,它...
Express 框架介绍 安装 路由 动态路由 get传值及相关源码.zip
04-18
实际操作中,结合这些代码进行调试和学习,将有助于加深对Express框架的理解。 总之,Express为Node.js开发者提供了一个强大的工具,通过掌握其核心概念和用法,你可以轻松构建功能丰富的web应用。通过实际操作和...
express 框架
l-ddui的博客
03-29 373
1 框架 用来快速解决某一类问题的半成品,要遵守框架的使用规范:bootstrap、lay-ui、express、vue、react 2 库 jQuery、dayjs、underscore、lodash、art-template、axios、echart、zepto.js 3 web 开发 运行在 node.js 之上,对不同的请求能够显示页面,提供接口服务 4 框架使用 res.send( ) 是express 框架给 res 对象补充提供的方法(http模块中的 res 没有这个方法)用于
Express框架学习记录一:Express框架基础使用
吮指原味鸡的博客
02-19 1742
Express框架一、什么是Express框架二、安装Express三、框架的使用1.根据请求地址返回给前端内容2.中间件3.use中间件4.中间件的作用5.更改状态码6.捕获错误的错误处理中间件7.构建模块化路由Router8.获取get请求附带的参数9.获取post请求附带的参数10.路由占位参数11.静态资源访问功能12.express的模板引擎13.locals对象 一、什么是Express框架 基于Node的一个框架,封装了读取html文件、css文件的操作,直接返回封装好的内容,让开发人员更加注
Express请求处理和express-art-template模板引擎(三)
kiku
02-02 365
一、构建模块化路由 构建模块化路由基础代码: // 引入express框架 const express = require('express'); // 创建网站服务器 const app = express(); // 创建路由对象 const home = express.Router(); // 为路由对象匹配请求路径 app.use('/home', home); // 创建二级路由 ho...
深入理解Node.js Express路由中间件解析
本篇文章主要关注的是Express中的两个核心概念:路由中间件。 **路由** 路由Express的核心功能之一,它决定了服务器如何响应特定的HTTP请求。路由通过定义URL路径和HTTP方法(GET、POST、PUT、DELETE等)来确定...
写文章

热门文章

  • vite常用配置 7306
  • Express框架(基础部分、路由和中间件) 3358
  • Nestjs使用log4j打印日志 1740
  • JS DOM快速上手 1363
  • vue3中使用wangEditor上传图片 1291

分类专栏

  • 前端开发插件 13篇
  • node.js 21篇
  • js 8篇
  • React 5篇
  • Vue 10篇
  • HarmongOS 1篇
  • Three.js 5篇
  • Uniapp 1篇
  • web3 3篇
  • Android 1篇
  • docker 1篇
  • Vite 4篇
  • Webpack 2篇
  • TypeScript 1篇
  • Nust3 1篇
  • 微前端 1篇
  • Pinia 1篇
  • sass 1篇
  • git 1篇

最新评论

  • 专有钉钉(浙政钉) 扫码登陆

    海上彼尚: 指的是,你写的当前登录页面的url

  • 专有钉钉(浙政钉) 扫码登陆

    阿wei程序媛: 请问这个回调地址指的是什么?

  • Three.js一篇就够了[持续更新]

    普通网友: 感谢大佬分享好文,学到了不少新知识,支持大佬,期待大佬持续输出优质文章!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • Three.js一篇就够了[持续更新]

    普通网友: 文章结构严谨有条,层次分明,读起来一点也不费劲,让人受益匪浅。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • web3.js的使用

    普通网友: 文章内容通俗易懂,适合不同层次的读者。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

最新文章

  • nodejs之SSH
  • nodejs桌面消息通知
  • 常用设计模式
2024
09月 8篇
08月 9篇
07月 3篇
06月 4篇
05月 13篇
04月 4篇
03月 2篇
01月 4篇
2023年31篇
2022年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家苏州景区玻璃钢雕塑定做丽江玻璃钢雕塑厂家直销玻璃钢雕塑性能表新余抽象玻璃钢雕塑联系方式郑州雕塑玻璃钢公司软装玻璃钢卡通雕塑设计黄陂玻璃钢花盆花器宿州室外玻璃钢雕塑河源定制玻璃钢动物雕塑销量好的玻璃钢花盆山西玻璃钢浮雕不锈钢公园雕塑益阳商场美陈甘肃酒店艺术玻璃钢雕塑南通杯子型玻璃钢花盆苏家屯玻璃钢雕塑厂家中站玻璃钢雕塑加工厂家天津玻璃钢雕塑定制价格表珠海玻璃钢透光雕塑批发襄阳玻璃钢花盆保定玻璃钢动物鹿雕塑绍兴玻璃钢广场雕塑价格花朵校园玻璃钢雕塑定制厂家西工玻璃钢雕塑费用阜阳人物玻璃钢雕塑厂家河南特色商场美陈生产厂家临汾玻璃钢花盆花器生肖玻璃钢雕塑公司电话人物玻璃钢雕塑方法黑龙江玻璃钢人物雕塑定制荷花鱼玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化