react 项目--博客系统 (七)

news/2024/7/15 18:09:40 标签: react.js, 前端, reactjs, javascript

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

未完待续......


http://www.niftyadmin.cn/n/640909.html

相关文章

Cisco实用命令笔记(适合网管)

1. IP和MAC地址绑定网上资料很多,但多是转载。访问控制列表有点复杂,而端口绑定对我们又没必要,我们只是想防止别人盗用他人有外网权限的IP地址上网,所以我们只是用了以下命令:6509-1(config)# …

从ajax到fetch

Ajax 是什么?答:Ajax是一种可以在浏览器和服务器之间使用异步数据传输(HTTP请求)的技术。使用它可以让页面请求少量的数据,而不用刷新整个页面。而传统的页面(不使用Ajax)要刷新部分内容&#x…

十六、线程

写多线程的两种方法 (多线程) 之前写的程序都是单线程的(只有一条执行路径) 1.public class Helloworld1 { //第一种方法(实现Runnable接口)更好,能继承,又能实现尽量实现(实现了之后,还能继承) public stat…

微服务网关Zuul迁移到Spring Cloud Gateway

背景 在之前的文章中,我们介绍过微服务网关Spring Cloud Netflix Zuul,前段时间有两篇文章专门介绍了Spring Cloud的全新项目Spring Cloud Gateway,以及其中的过滤器工厂。本文将会介绍将微服务网关由Zuul迁移到Spring Cloud Gateway。 Sprin…

redux学习笔记——小练习

7. redux-react的小练习? jsimport React, { Component } from reactimport { createStore } from reduximport { Provider, connect } from react-reduxclass ReduxExample extends Component{render(){var Fun(props)>{const {text, onChangeText, onButtonC…

react 项目--博客系统 (八)

Loading...... 接上篇文章,在项目开发过程中需要建立许多模型,今天我们就先建立几个基本模型; 首先在 src 目录下创建文件夹 models 用来存放建立的模型,在 models 目录下创建 user.js 用来存放用户模型; 相关配置如…

react 项目--博客系统 (九)

Loading...... 接上一篇文章,在创立完对应的模型后在数据初始化时需加载各模型的对应关系; 在 init 中的 initDB 中建立各模型之间的关系; 大概关系有如下几种(后续开发用到关系再添加): 官方文档&…

Spring classPath:用法

Spring加载resource时classpath*:与classpath:的区别 Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件classpath*:的出现是为了从多个jar文件中加载相同的文件classpath:只能加载找到的第一个文件. 比如 resource1.jar中的pa…