express进阶用法如:静态资源中间件,路由中间件的用法等

Express是一个流行的Node.js框架,用于构建web应用程序和API。以下是Express进阶用法的详细介绍:

1.路由

基本路由 :Express中的路由通过app.VERB()方法定义,其中VERB是HTTP动词,如get、post 等。

例如:

javascript 复制代码
app.get('/users', function(req, res){})

注:匹配对所有发送到'/users'路径的GET请求。
路由参数 :可以使用路由参数捕获URL中的变量。

例如:

javascript 复制代码
app.get('/user/:id', function(req, res){});

注释:' :id ' 是一个路由参数,可以通过req.params.id获取其值。
正则表达式路由 :Express支持使用正则表达式来定义路由。

例如:

javascript 复制代码
app.get(/^\/page\/\d+$/, function(req, res){});

注释:匹配以'/page/'开头后跟一个或多个数字的路径。

2.中间件

内置中间件 :Express提供了一些内置中间件函数,如express.json()和express.urlencoded() ,用于解析JSON 和URL编码 的数据。
第三方中间件 :可以引入第三方中间件,如cookie-parser 用于解析Cookie数据 。首先安装cookie-parser ,然后在应用中引入和使用它。
错误处理中间件 :错误处理中间件有四个参数:(err, req, res, next)。它是在正常中间件之后调用的,并且必须放在最后。例如:

javascript 复制代码
app.use(function(err, req, res, next){
 	res.status(500).send('Something broke!') 
});。

3.静态资源托管

express.static :使用express.static中间件可以托管静态资源。例如:

javascript 复制代码
app.use(express.static('public'));

代码注释:将所有在'public'目录下的文件作为静态资源服务。
设置前缀:可以为静态资源指定一个基础路径前缀。例如:

javascript 复制代码
app.use('/static', express.static('public'));

代码注释:意味着所有静态资源将通过'/static'路径访问。

4.请求对象(req)

req.query :获取URL查询参数(问号后面的参数)。例如,对于代码

javascript 复制代码
URL'/?username=zhangsan&age=18',req.query

将返回:

javascript 复制代码
{ username: 'zhangsan',
  age: '18' }

req.body :获取POST请求体 参数。

需要使用express.json()或 express.urlencoded()中间件来解析请求体。
req.params:获取
路由参数
。

例如,在路由/user/:userId中,req.params将包含{ userId: 'value' }。

5.响应对象(res)

res.send :发送各种类型的响应。

例如:res.send('Hello World')将发送一个字符串,而res.send({ key: 'value' })将发送一个JSON对象。
res.status :设置HTTP状态码。

例如:res.status(404).send('Not Found')将返回一个404状态码和相应的消息。
res.redirect :重定向到另一个路由。

例如,res.redirect(302, '/home')将客户端重定向到'/home'路径。

6.模板引擎

模板引擎安装密令 :npm install ejs --save
使用模板引擎 :Express支持使用模板引擎,如Jade和EJS,来生成HTML页面。首先安装并配置模板引擎,然后使用res.render()方法渲染模板。
自定义模板引擎:可以开发自己的模板引擎并将其与Express集成。需要在Express中使用app.engine()方法注册模板引擎,并使用app.set()方法设置模板目录和其他选项。

7.错误处理

基本错误处理:可以使用中间件函数来处理错误。例如:

javascript 复制代码
app.use(function(err, req, res, next){ 
	res.status(500).send('Server Error') 
});

代码注释:会捕获并处理错误,返回500状态码和错误消息。
错误传播:如果一个中间件函数抛出一个错误但未处理,错误会传播到下一个错误处理中间件。如果没有错误处理中间件,则服务器将停止执行并显示错误消息。

9.性能优化

缓存 :使用缓存可以减少不必要的计算和数据库查询。

例如,可以使用memory-cache中间件来缓存频繁请求的数据。
压缩 :启用HTTP响应压缩可以减少传输数据量,提高网站速度。

使用compression中间件可以自动压缩响应数据。

相关推荐
Dumbness1 天前
一份 JSON 生成增删改查接口,入参清洗漏了什么:Number(" ") 是 0,搜 100% 把 1000 元券也搜出来
node.js·express
大草原的小灰灰1 天前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
Dumbness4 天前
毕设后台导出 CSV 的 4 个坑:date 字段漏了公式防护,搜索框输入 % 能扫全表
node.js·express
真上帝的左手6 天前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis
9624566 天前
容器 RUNNING,为什么中间件仍不可用?ActiveMQ 与 Kafka/ZooKeeper 恢复实录
中间件·kafka·activemq
真上帝的左手6 天前
30. 技术专题-‌应用框架组件-缓存-Redis
数据库·redis·分布式·缓存·中间件
真上帝的左手6 天前
30. 技术专题-‌应用框架组件-搜索引擎-ES
大数据·分布式·elasticsearch·搜索引擎·中间件
kingx37 天前
BugKu PRA 渗透测试 2(Harry‘s Blog):9 Flag 全链实战复盘
中间件·渗透测试·log4j2·内网渗透·反序列化
Dumbness7 天前
一个手机号验证码登录接口的五个坑:无限发码、无限试码,传个数字就让 Express 进程退出
node.js·express
sun_weitao7 天前
用 FastAPI + MQTT 做一个 ESP32最小化跑通示例
中间件·vue·fastapi