一小时:手把手教你入门express【建议收藏】

本文是一篇关于Express入门的教程,详细介绍了Express的基础知识,包括它的本质、简单使用、路由方法、中间件和模板引擎的使用。通过实例展示了如何创建Web服务器、处理请求和响应、设置静态资源托管、路由模块化以及使用内置和自定义中间件。此外,还涵盖了错误处理和404中间件,以及模板引擎的概念和艺术模板(art-template)的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

express

简介

Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。搭建web服务器

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

使用Express开发框架可以非常方便、快速的创建Web网站的服务器或API接口的服务器

官方网址:https://www.expressjs.com.cn/

简单使用

下载安装:

npm init -y
npm i express -S

使用步骤:

  1. 导入包
  2. 创建服务器
  3. 处理请求
  4. 监听端口
const express = require('express')
const app = express()
app.get(路由,回调) // get是请求方法
app.listen(端口号)

路由方法

请求方法还支持:

get - 查询请求 - 条件在地址栏

post - 新增请求 - 数据在请求主体

put - 修改请求 - 条件在地址栏 - 数据在请求主体

delete - 删除请求 - 条件在地址栏

各个动词方法用来处理对应的请求。不过有一个方法除外:

app.all() // 可以用来处理任意请求方式

虽然all方法可以处理任意请求,但是尽量少用,甚至尽量不要使用。

使用postman进行调试

路由路径

完全匹配

// 匹配根路径的请求
app.get('/', function (req, res) {
   
  res.send('root');
});

// 匹配 /about 路径的请求
app.get('/about', function (req, res) {
   
  res.send('about');
});

// 匹配 /random.text 路径的请求
app.get('/random.text', function (req, res) {
   
  res.send('random.text');
});

不完全匹配

// 匹配 acd 和 abcd
app.get('/ab?cd', function(req, res) {
   
  res.send('ab?cd');
});

// 匹配 abcd、abbcd、abbbcd等
app.get('/ab+cd', function(req, res) {
   
  res.send('ab+cd');
});

// 匹配 abcd、abxcd、abRABDOMcd、ab123cd等
app.get('/ab*cd', function(req, res) {
   
  res.send('ab*cd');
});

// 匹配 /abe 和 /abcde
app.get('/ab(cd)?e', function(req, res) {
   
 res.send('ab(cd)?e');
});

字符 ?、+、* 和 () 是正则表达式的子集,- 和 . 在基于字符串的路径中按照字面值解释。

正则匹配:

// 匹配任何路径中含有 a 的路径:
app.get(/a/, function(req, res) {
   
  res.send('/a/');
});

// 匹配 butterfly、dragonfly,不匹配 butterflyman、dragonfly man等
app.get(/.*fly$/, function(req, res) {
   
  res.send('/.*fly$/');
});

路由多次处理

使用一个回调函数处理路由:

app.get('/example/a', function (req, res) {
   
  res.send('Hello from A!');
});

多次处理:

app.get('/example/b', function (req, res, next) {
   
  console.log('这处理完之后会交给下一个函数处理');
  next();
}, function (req, res) {
   
  res.send('Hello from B!');
});

使用回调函数数组处理路由:

var cb0 = function (req, res, next) {
   
  console.log('CB0')
  next()
}

var cb1 = function (req, res, next) {
   
  console.log('CB1')
  next()
}

var cb2 = function (req, res) {
   
  res.send('Hello from C!')
}

app.get('/example/c', [cb0, cb1, cb2])

混合使用函数和函数数组处理路由:

var cb0 = function (req, res, next) {
   
  console.log('CB0')
  next()
}

var cb1 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪吃ღ大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值