NodeJs学习日志(4):路由合并_环境配置_常用文件目录
路由合并_环境配置_常用文件目录
路由合并
// routes/routes.js
const express = require('express');
const router = express.Router();// 合并子路由
var indexRouter = require('../routes/index');
var usersRouter = require('../routes/users');router.use('/', indexRouter);
router.use('/users', usersRouter);module.exports = router;
app.js 中使用
//路由文件并
const routes = require("./config/routes");
app.use('/', routes);
express路由语法
http://localhost:19997/routes_1/routes_2/auth1/login
协议+ip地址:端口/app.js中绑定的路由+路由文件中的请求定义
http:// | 协议 |
localhost:19997 | ip地址:端口 |
routes_1/routes_2/auth1/ | app.js中绑定的路由 |
login | 路由文件中的请求定义 |
建议将:实际路由文件,和路由文件保持一直,以便于后期维护。
例如:请求URL是: routes_1/routes_2/auth1/login
则文件路径建议:/routes/routes_1/routes_2/auth1/
而不是随意的一个路径
默认app.js内容分析
//导入模块
var express = require('express'); // 引入 Express 框架
var path = require('path'); // Node.js 内置模块,用于处理文件路径
var cookieParser = require('cookie-parser'); // 解析 HTTP Cookie 的中间件
var logger = require('morgan'); // HTTP 请求日志记录中间件//引入路由文件
var indexRouter = require('./routes/index'); // 主路由(如首页)
var usersRouter = require('./routes/users'); // 用户相关路由(如 /users)var app = express(); // 初始化 Express 应用//引用中间件
app.use(logger('dev')); // 使用 morgan 记录请求日志('dev' 格式)
app.use(express.json()); // 解析 JSON 格式的请求体(如 POST 请求的 JSON 数据)
app.use(express.urlencoded({ extended: false })); // 解析 URL-encoded 请求体(如表单提交)
app.use(cookieParser()); // 解析 Cookie
app.use(express.static(path.join(__dirname, 'public'))); // 托管静态文件(如 CSS、JS、图片)//路由挂载
app.use('/', indexRouter); // 所有 / 开头的请求由 indexRouter 处理
app.use('/users', usersRouter); // 所有 /users 开头的请求由 usersRouter 处理//导出 app(供 www 或其他文件使用)
module.exports = app;
默认/bin/www内容分析
取端口 → 创建服务器 → 监听请求,
错误时提示,成功时输出日志
var app = require('../app'); // 加载 app.js 中的 Express 配置
var debug = require('debug')('mide-routes-dotenv-filedir:server'); // 调试日志工具
var http = require('http'); // Node.js 内置 HTTP 模块var port = normalizePort(process.env.PORT || '3000');//从环境变量读取端口,如果没有就用3000
app.set('port', port);var server = http.createServer(app);
server.listen(port);
server.on('error', onError); // 错误监听
server.on('listening', onListening); // 成功启动监听/*** 处理端口值为 数字(如 3000)或 字符串*/
function normalizePort(val) {var port = parseInt(val, 10); // 转为十进制整数if (isNaN(port)) { return val; }// 非数字(如命名管道)直接返回if (port >= 0) { return port; } // 有效端口号return false; // 无效值
}/*** 处理错误事件*/
function onError(error) {if (error.syscall !== 'listen') {throw error;}var bind = typeof port === 'string'? 'Pipe ' + port: 'Port ' + port;// handle specific listen errors with friendly messagesswitch (error.code) {case 'EACCES':console.error(bind + ' 需要提升权限');process.exit(1);break;case 'EADDRINUSE':console.error(bind + ' 端口已经被占用 ');process.exit(1);break;default:throw error;}
}/*** Event listener for HTTP server "listening" event.*/function onListening() {var addr = server.address();var bind = typeof addr === 'string'? 'pipe ' + addr: 'port ' + addr.port;debug('Listening on ' + bind);
}
使用dotenv进行环境配置
安装dotenv
npm install dotenv
VSCode:
左侧1:导入路由并导入dotenv中间件require('dotenv').config();
中间2:在请求中打印.env文件
右侧3:合并的路由的文件
如果左1和右3为可选的,在app.js中引入中间件require('dotenv').config();
,在其他地方即可直接调用。
常用文件目录解析
项目根目录
project/
├── config/ # 配置文件
├── migrations/ # Sequelize 数据库迁移文件
├── models/ # Sequelize 模型定义
├── routes/ # 路由文件
├── controllers/ # 业务逻辑控制器
├── middlewares/ # 自定义中间件
├── public/ # 静态资源
├── utils/ # 工具函数
├── tests/ # 测试文件
├── seeders/ # sequlize种子文件
├── app.js # 主应用入口
└── package.json
1. config/ - 配置文件
config/
├── config.js # 主配置文件
├── database.js # 数据库连接配置
└── passport.js # 认证策略配置(如使用)
2. models/ - Sequelize 模型
models/
├── user.model.js # 用户模型
├── post.model.js # 文章模型
├── comment.model.js # 评论模型
└── index.js # 模型初始化文件
3. routes/ - 路由定义
routes/
├── auth.routes.js # 认证相关路由
├── post.routes.js # 文章相关路由
├── comment.routes.js # 评论相关路由
└── index.js # 路由聚合文件
4. controllers/ - 业务逻辑
controllers/
├── auth.controller.js # 认证逻辑
├── post.controller.js # 文章逻辑
└── comment.controller.js # 评论逻辑
5. middlewares/ - 自定义中间件
middlewares/
├── auth.middleware.js # 认证中间件
├── error.middleware.js # 错误处理
└── validation.middleware.js # 数据验证
6. migrations/ - 数据库迁移
migrations/
├── 202301010000-create-user.js
├── 202301010001-create-post.js
└── 202301010002-create-comment.js