下面是Node.js中Express框架的使用教程详解:
一、安装Express框架
-
首先需要安装Node.js,可以到官网下载对应版本: https://nodejs.org/en/
-
安装完成Node.js后,可以使用npm来安装Express框架:
npm install express
二、创建一个基本应用
以下是一个简单的Express应用的基本结构:
const express = require('express')
const app = express()
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.listen(3000, function () {
console.log('App listening on port 3000!')
})
这个应用通过HTTP GET请求响应'Hello World!'字符串,在本地监听3000端口。
三、Express应用程序的架构
一个Express应用程序是一个基于中间件和路由的框架。中间件是指在请求和响应之间进行预处理的一些方法,路由则负责定义具体的请求响应规则。
1. 中间件
Express应用程序可以使用自己提供的中间件函数,也可以使用其他人开发的中间件。它们被定义为Express应用程序中的一个函数,有点像洋葱模型,每个请求都会被一层一层处理。一个中间件函数可以访问请求和响应对象,以及应用程序请求-响应循环中的下一个中间件函数。中间件函数可以执行以下任务:
- 执行任意代码;
- 更改请求和响应对象;
- 结束请求响应周期;
- 调用下一个中间件函数。
以下是一个使用中间件的示例:
const express = require('express')
const app = express()
// 自定义中间件
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
// 路由
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
在这个示例中,我们定义了一个自定义的中间件,它会在每个请求被处理前打印出当前时间。这个中间件函数在路由函数之前被调用,next()函数表示执行下一个中间件函数,如果没有该函数,则路由函数将永远无法被执行。
2. 路由
路由是指定义URL的路径和它们之间的处理方式。Express应用程序使用一个调用各种HTTP方法的路由方法来响应客户端请求。以下是一个使用路由的示例:
const express = require('express')
const app = express()
// 响应GET请求到 /user/:id
app.get('/user/:id', function (req, res) {
res.send('user ' + req.params.id)
})
// 响应POST请求到 /user/:id
app.post('/user/:id', function (req, res) {
res.send('Add user ' + req.params.id)
})
// 响应PUT请求到 /user/:id
app.put('/user/:id', function (req, res) {
res.send('Update user ' + req.params.id)
})
// 响应DELETE请求到 /user/:id
app.delete('/user/:id', function (req, res) {
res.send('Delete user ' + req.params.id)
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
在这个示例中,我们定义了四个不同的路由方法来响应客户端发起的不同的HTTP请求,并且它们都是基于/user/:id路径。其中请求的id参数可以使用req.params获得。
四、示例应用
以下是一个完整的应用程序示例,它包含了中间件、路由、表单提交和静态文件的使用方式:
const express = require('express')
const bodyParser = require('body-parser')
const multer = require('multer')
const upload = multer()
const app = express()
// 静态文件
app.use(express.static('public'))
// 自定义中间件
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
// 处理POST请求中的表单数据
app.use(bodyParser.urlencoded({ extended: false }))
// 处理POST请求中的JSON数据
app.use(bodyParser.json())
app.get('/', function (req, res) {
res.sendFile(__dirname + '/views/index.html')
})
app.post('/submit', upload.array(), function (req, res) {
console.log(req.body)
res.send('Received!')
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
在该示例中,我们首先使用Express内置的静态文件中间件来处理应用程序中public目录下的静态文件。接着定义了一个自定义的中间件函数,用来打印每一次请求的时间。然后我们使用body-parser中间件来处理POST请求中的表单和JSON数据。我们还定义了一个用来渲染HTML页面的路由。最后定义了一个处理表单提交的路由,其中使用了multer中间件来处理文件上传。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js中Express框架的使用教程详解 - Python技术站