MST

星途 面试题库

面试题:Node.js模块化在前后端分离项目中的基础应用

在一个前后端分离项目中,前端使用Vue.js,后端使用Node.js。请阐述如何在Node.js中通过模块化来管理数据库连接池相关的代码,以便在不同的路由模块中复用?并简单说明模块化的优势在这个场景中如何体现。
18.9万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

1. 在Node.js中通过模块化管理数据库连接池代码的步骤

  1. 创建连接池模块
    • 使用如mysql2pg等数据库操作库。以mysql2为例,先安装npm install mysql2
    • 创建一个db.js文件用于管理连接池。
const mysql = require('mysql2');

// 创建连接池
const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'your_database',
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0
});

// 将连接池导出
module.exports = pool.promise();
  1. 在路由模块中复用
    • 假设我们有一个userRoutes.js路由模块,需要使用数据库连接池。
const express = require('express');
const router = express.Router();
const pool = require('./db');

// 获取所有用户
router.get('/users', async (req, res) => {
    try {
        const [rows] = await pool.query('SELECT * FROM users');
        res.json(rows);
    } catch (error) {
        console.error(error);
        res.status(500).send('Error fetching users');
    }
});

module.exports = router;

2. 模块化在该场景中的优势体现

  1. 代码复用:不同的路由模块(如userRoutes.jsproductRoutes.js等)都可以引入db.js模块中创建的连接池,避免了在每个路由模块中重复编写连接池创建代码,提高了代码的复用性。
  2. 易于维护:如果连接池的配置(如数据库主机、用户名、密码等)需要修改,只需要在db.js一个地方修改即可,而不用在每个使用到数据库连接的路由模块中修改,降低了维护成本。
  3. 清晰的代码结构:将数据库连接池相关代码封装在独立模块中,使得路由模块专注于处理业务逻辑,代码结构更加清晰,便于理解和开发。