ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Must To Do List project 2일차(client/server 구조 생성)
    프로젝트 진행 2020. 1. 16. 11:49

    20.01.14

    client와 server의 기본 구조를 생성함.

     

    - client

    클라이언트는 react를 기반으로 구조를 생성.

    npx create-react-app my-app
    
    cd my-app
    npm start
    
    npm init
    npm install --save react react-dom

    위 코드를 통해 react를 설치한 후 필요한 컴포넌트를 정리.

    vscode extension을 통해서 세부적인 세팅을 할 수 있으나 자세한 설명이 필요할 것 같아 좀더 알아보고 올 예정.

     

    - server

    index.js 에 express, morgan, bodyparser, session, cors 등 필요한 미들웨어, 모듈을 설치하고 controllers 정리.

    const express = require('express');
    require('./models');
    const morgan = require('morgan');
    const bodyParser = require('body-parser');
    const session = require('express-session');
    const cors = require('cors');
    const app = express();
    const port = 4000;
    const {
        logInController,
        logOutController,
        signUpController,
        myPageController,
        todoPageController,
        todoAdd,
        todoEdit,
        todoDelete
    } = require('./controllers');
    app.use(
        session({
            secret: 'secret',
            resave: false,
            saveUninitialized: true
        })
    );
    //세션을 사용하는 형식임
    app.use(bodyParser.json());
    //바디파서를 사용하는 형식
    app.use(morgan('dev'));
    //모건을 사용하는 형식
    app.use(
        cors({
            origin: ['http://localhost:3000'],
            method: ['GET', 'POST', 'PUT', 'DELETE'],
            credentials: true
        })
    );
    //코어스를 사용하는 형식
    app.get('/user', () => {
        console.log('helloworld');
    });
    /*
    app.post('/user/login', logInController);
    app.post('/user/signup', signUpController);
    app.get('/user/logout', logOutController);
    app.get('/user/mypage', myPageController);
    app.get('/user/todopage', todoPageController);
    app.post('/todo/add', todoAdd);
    app.put('/todo/edit', todoEdit);
    app.delete('/todo/delete', todoDelete);
    */
    app.listen(port, () => {
        console.log(`server listen on ${port}`);
    });
    module.exports = app;
    

     

    models > index.js 파일 정리

    'use strict';
    
    const fs = require('fs');
    const path = require('path');
    const Sequelize = require('sequelize');
    const basename = path.basename(__filename);
    const env = process.env.NODE_ENV || 'development';
    const config = require(__dirname + '/../config/config.json')[env];
    const db = {};
    
    let sequelize;
    if (config.use_env_variable) {
      sequelize = new Sequelize(process.env[config.use_env_variable], config);
    } else {
      sequelize = new Sequelize(config.database, config.username, config.password, config);
    }
    
    fs
      .readdirSync(__dirname)
      .filter(file => {
        return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
      })
      .forEach(file => {
        const model = sequelize['import'](path.join(__dirname, file));
        db[model.name] = model;
      });
    
    Object.keys(db).forEach(modelName => {
      if (db[modelName].associate) {
        db[modelName].associate(db);
      }
    });
    
    db.sequelize = sequelize;
    db.Sequelize = Sequelize;
    
    module.exports = db;
    

     

    클라이언트와 마찬가지로 세부적인 세팅은 vscode extension을 통해서 할 수 있으나 자세한 설명이 필요할 것 같아 좀더 알아보고 올 예정.

     

    이로써 기본 구조 생성은 마치고 다음엔 server 백엔드 작업을 작성할 예정임.

Designed by Tistory.