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:19997ip地址:端口
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 messages
  switch (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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值