Express-Ts-Auth-Service 项目教程
1. 项目的目录结构及介绍
/src
├── config/ # 配置文件
├── controller/ # 路由控制器
├── middleware/ # 自定义中间件
├── routes/ # 路由
├── types/ # 类型定义
├── utils/ # 工具类和函数
├── validations/ # 验证模式
├── app.ts # Express 应用
└── index.ts # 应用入口点
目录结构介绍
- config/: 存放项目的配置文件,如数据库连接配置、环境变量配置等。
- controller/: 存放路由控制器,处理具体的业务逻辑。
- middleware/: 存放自定义中间件,用于处理请求和响应。
- routes/: 存放路由定义,定义API的入口点。
- types/: 存放TypeScript的类型定义文件。
- utils/: 存放工具类和函数,提供通用的功能支持。
- validations/: 存放验证模式,用于验证用户输入。
- app.ts: Express应用的入口文件,配置Express应用。
- index.ts: 应用的启动文件,负责启动Express服务器。
2. 项目的启动文件介绍
index.ts
import app from './app';
import { PORT } from './config/env';
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
启动文件介绍
- index.ts: 这是项目的启动文件,负责启动Express服务器。它导入
app.ts
中配置好的Express应用,并监听指定的端口(通过环境变量PORT
指定)。启动成功后,会在控制台输出服务器运行的端口号。
3. 项目的配置文件介绍
config/env.ts
import dotenv from 'dotenv';
dotenv.config();
export const NODE_ENV = process.env.NODE_ENV || 'development';
export const PORT = process.env.PORT || 3000;
export const SERVER_URL = process.env.SERVER_URL || 'http://localhost:3000';
export const CORS_ORIGIN = process.env.CORS_ORIGIN || '*';
export const ACCESS_TOKEN_SECRET = process.env.ACCESS_TOKEN_SECRET || '';
export const REFRESH_TOKEN_SECRET = process.env.REFRESH_TOKEN_SECRET || '';
export const ACCESS_TOKEN_EXPIRE = process.env.ACCESS_TOKEN_EXPIRE || '15m';
export const REFRESH_TOKEN_EXPIRE = process.env.REFRESH_TOKEN_EXPIRE || '7d';
export const REFRESH_TOKEN_COOKIE_NAME = process.env.REFRESH_TOKEN_COOKIE_NAME || 'refresh_token';
export const DATABASE_URL = process.env.DATABASE_URL || '';
export const SMTP_HOST = process.env.SMTP_HOST || '';
export const SMTP_PORT = process.env.SMTP_PORT || '';
export const SMTP_USERNAME = process.env.SMTP_USERNAME || '';
export const SMTP_PASSWORD = process.env.SMTP_PASSWORD || '';
export const EMAIL_FROM = process.env.EMAIL_FROM || '';
配置文件介绍
- env.ts: 这个文件负责加载环境变量,并导出项目中使用的配置项。它使用
dotenv
库来加载.env
文件中的环境变量,并提供默认值。配置项包括应用的运行环境、端口号、服务器URL、CORS配置、JWT密钥、数据库连接URL、SMTP配置等。
通过这些配置文件,项目可以在不同的环境中灵活运行,并且可以根据需要进行自定义配置。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考