Loading......
接上一篇文章,我们在真实项目开发的过程中,如果把所有代码全写在一起,那么会导致最终呈现效果十分混乱,所以我们一般都会进行模块化的抽离,使项目在后期修改维护更加的方便。
首先在根目录 backend 下创建一个文件夹 src 用来存放模块化的代码 ;
db 用来存放数据库代码;init 用来存放初始化代码;routes 用来存放路由相关配置;
将 app.js 中的代码分别抽离出去;
在 db 文件夹目录下创建 sequelize.js 及 connection.js 用来存放 app.js 中的 sequelize 和 dbConnection;
在 init 文件夹目录下创建 initDB.js 及 initServer.js 用来存放 app.js 中相应的代码;
书写完后注意相应的引入与导出;在 app.js 文件中引入即可;
最后在 backend 的终端下测试效果;终端下 node app.js;
详细代码:
app.js
javascript">require("dotenv").config({ path: ".env" });
const initDB = require('./src/init/initDB.js')
const initServer = require('./src/init/initServer.js')
const express = require("express");
const app = express();
const main = async () => {
//初始化数据库服务
await initDB();
//启动 node 服务
await initServer(app);
};
main();
connection.js
javascript">const sequelize = require('./sequelize.js')
const dbConnection = async () => {
return new Promise(async (resolve, reject) => {
try {
await sequelize.authenticate();
console.log("mysql Connection successful !!! ");
resolve();
} catch (error) {
console.error("Unable to connect to the database:", error);
reject(error);
}
});
};
module.exports = dbConnection
sequelize.js
javascript">const { Sequelize } = require("sequelize");
const sequelize = new Sequelize(
process.env.DB_NAME,
process.env.DB_USERNAME,
process.env.DB_PASSWORD,
{
dialect: process.env.DB_DIALECT,
host: process.env.DB_HOST,
port: process.env.DB_PORT,
logging: false,
}
);
module.exports = sequelize
initDB.js
javascript">const dbConnection = require('../db/connection.js')
const initDB =()=>{
return new Promise(async (resolve,reject)=>{
try{
await dbConnection()
resolve()
}catch(error){
console.log('error');
reject(error)
}
})
}
module.exports = initDB
initServer.js
javascript">
const initServer = async (app) => {
return new Promise((resolve, reject) => {
const PORT = process.env.PORT || 8080;
app
.listen(PORT, () => {
console.log(`running http://localhost:${PORT}`);
resolve();
})
.on("error", (error) => {
console.log("error");
reject();
});
});
};
module.exports = initServer
未完待续......