express
express 是一个基于Node.js 平台的极简、灵活的WEB应用开发框架
安装express
npm i express
导入
require('express')
创建应用对象
const app = express()
创建路由
app.get('/',(req,res)=>{})
监听端口,启动服务
app.listen(3000,()=>{console.log('启动成功')
});
初体验版的完整代码
const express = require('express');const app =express();app.get('/', (req, res) => {res.send('Hello World!nihao ');
})app.listen(3000,()=>{console.log('启动成功')
});
express 路由
路由确定了应用程序如何响应客户端对特定端点的请求
路由组成
包括有请求方法,路径和后调函数;语法如下:
app<method>(path,callback)
method 包括get 、post、put、delete 和HTTP协议中的一致
app.get('/', (req, res) => {res.send('Hello World!nihao ');
})
回调函数中包括有两个参数,一个是request 和response ,分别是请求报文和响应报文;其中的知识点和 node中http 模块是一致的,可以去node.js 实战——(Http 知识点学习) 了解
中间件
本质上是一个回调函数
作用:使用函数封装公共操作,简化代码
全局中间件
每一个请求到达服务端之后都会执行全局中间件函数
const express = require('express');const app =express();function record(req,res,next){//先写自己的操作console.log(req.method,res.statusCode);next() //表示执行后面的操作
}app.use(record);app.get('/', (req, res) => {res.send('Hello World!nihao ');
})app.listen(3000,()=>{console.log('启动成功')
});
路由中间件
作用在某些路由上,比如说,要求登陆之后才能使用的路由
const express = require('express');const app =express();let check =(req,res,next)=>{next();
}
app.get('/',check, (req, res) => {res.send('Hello World!nihao ');
})app.listen(3000,()=>{console.log('启动成功')
});
静态资源中间件
app.use(express.static(path.join(__dirname,'public')));
注:
- index.html 是默认打开的资源
- 如果静态资源与路由规则同时匹配,谁先匹配谁就响应
- 路由响应动态资源,静态资源中间件响应静态资源
获取请求体数据
自 Express 4.16.0 起,部分功能已内置在 express 中,无需单独安装,但仍可使用 body-parser 模块以保持兼容性。
安装body-parser
npm install body-parser
使用
const express = require('express');
const bodyParser = require('body-parser');const app = express();// 解析 JSON 数据
app.use(bodyParser.json());// 解析 URL-encoded 表单数据
app.use(bodyParser.urlencoded({ extended: true }));app.post('/login', (req, res) => {const { username, password } = req.body;res.send(`用户名:${username}, 密码:${password}`);
});
防盗链
盗链(Hotlinking) 是指别人网站直接引用你网站上的资源(如图片、视频、音频等),消耗的是你的服务器流量,但收益却归别人。
作用
- 节省服务器带宽和成本
- 防止图片/视频被非法滥用
- 提高品牌保护
实现方法
检查 Referer 请求头,判断资源是否是从自己网站请求的
app.get('/protected-img/:filename', (req, res) => {const referer = req.get('Referer');if (referer && !referer.startsWith('https://yourdomain.com')) {return res.status(403).send('禁止盗链');}const filePath = path.join(__dirname, 'public/images', req.params.filename);res.sendFile(filePath);
});
express 应用程序生成器
Express 应用程序生成器(express-generator)是一个非常实用的脚手架工具,用来快速创建一个结构清晰的 Express 项目骨架,省去了手动搭建文件结构的麻烦,特别适合初学者和快速开发原型
🚀 1. 安装 express-generator
npm install -g express-generator
🏗️ 2. 创建一个项目
express myapp
📁 3. 项目结构说明
myapp/
├── app.js # 主应用文件
├── bin/www # 启动服务器的入口
├── public/ # 静态资源(如图片、CSS、JS)
├── routes/ # 路由定义(如 index.js, users.js)
├── views/ # 模板文件(如 .ejs/.pug/.hbs)
├── package.json # 项目描述和依赖
⚙️ 4. 启动项目
cd myapp
npm install
npm start
默认会监听 http://localhost:3000