(부3) 2. MERN 기본 풀 스택 환경 구축 방법-1

<设置列表>

1. 디렉토리/파일 목록 설정

2. 힘내 설정

3. 라이브러리 설정

4. 반응하기 위해 Node 서버를 연결하고 프록시 개발 환경을 설정합니다.

//오늘은 여기까지입니다.

5. 데이터베이스 설정

6. 로그 설정

일곱, 기타 설정

1. 디렉토리 설정


개인마다, 회사마다 다를 수 있습니다.

– 컨트롤러: 컨트롤러 API

– 로그: 로그 저장 공간

– 미들웨어: 미들웨어

– 모델: 몽구스 스키마 정의 공간

– 공개: html css js 빌드 결과

– Routing : 서버의 라우터 관리를 담당

– app.js: 요청을 받은 곳

– server.js: 서버 실행

– .env : 환경 변수 설정 파일

– db.js : 데이터베이스 연결용

프런트엔드 디렉토리

– 이런게 어디있나 페이지 컴포넌트 css만 있는듯

– 컨트롤러, apis, DAO 등도 유용합니다.

비즈니스 모델에 따라 크게 다를 것 같습니다.

React를 빌드하기 위해 폴더를 변경하는 방법

프런트엔드 폴더의 package.json에서 “scripts”의 “build” 변경

"build": "BUILD_PATH='../backend/public' react-scripts build",

2. 힘내 설정

– 백엔드/프론트엔드가 있는 상위 폴더

– git 클론(리포지토리 path.git)

– 모든 것을 저장소 이름 폴더에 넣습니다.

– 자식 추가. -> 자식 커밋 -m ‘메시지’ -> 자식 푸시

3. 라이브러리 설정

-후단:


이제 나는 이렇게 쓸 것이다

body-parser : json 자동 파서

cors: cors 해결

date-fns : 날짜 관련 라이브러리 (주로 로그용으로 사용)

dotenv: 설명이 필요하십니까?

택배: 저요?

mongodb: 새로운 청바지의 과대 광고

nodemon : 새로운 청바지의 Ditoyo

uuid: UUID는 Universally Unique IDentifier의 약자로 세상에 하나뿐인 ID가 있다는 의미입니다.

로거에 대해 이와 같은 것을 생성합니다.

-프론트 엔드:


Workbox는 Google에서 만든 pwa와 유사합니다.

– redux/toolkit: 여전히 redux를 사용하고 있습니까?

– 축: 아

– http-proxy-middleware : 반응 -> 노드 요청 시 프록시 설정.

– 애니메이션 엔진이 있으면 게시에 좋습니다.

4. 개발 환경 구축, Express 서버에 DB 연결, React 연결

서버.js

//basic code
const express = require('express');
const app = express();
const path = require('path');

// body-parser setting (json 자동파싱)
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended : true}));
app.use(bodyParser.json());

//environment variables setting (환경변수파일 가져오기)
require('dotenv').config(); 
const ENV = process.env;

// cors setting (cors 허용옵션)
const cors = require('cors'); 
let corsOption = {
    origin: `http://localhost:${ENV.PORT}`, // 허용 주소(3000), 3000은 react개발환경주소
    credentials: true  // true시 설정 내용을 응답헤더에 추가해 줌
}
app.use(cors(corsOption)); // CORS 미들웨어 추가

app.use(express.static(path.join(__dirname, './public'))) // static path 미들웨어 

app.get('/api/test', (req, res)=>{ //연결 테스트용 api
    res.send('get요청 성공!
') }) //main Page app.get('/', (req, res)=>{ res.sendFile(path.join(__dirname, './public/index.html')) }) //server open app.listen(ENV.PORT, (req,res)=>{ console.log('u r listening to ' + ENV.PORT) }) // 404는 react가 router를 담당 app.get('*', (req, res)=>{ res.sendFile(path.join(__dirname, './public/index.html')) })

기본 서버 설정

백엔드/.env

PORT = 4000 //난 서버는 4000포트에 열거다
DB_URL = '몽고DB주소'

프런트엔드/.env

PORT = 3000 //frontend 개발서버는 3000에 열거다

환경 변수를 설정하고

http 프록시 미들웨어 사용

– 프런트엔드/인 터미널

npm install http-proxy-middleware

그리고 frontend/setupProxy.js 파일을 생성합니다.

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
    app.use(
        '/api', //이건 프록시를 사용할 주소
        createProxyMiddleware({
            target: 'http://localhost:4000', //서버의 주소!
changeOrigin: true, }) ); };

복사해서 붙여넣기 하면 프록시 설정이 잘 됩니다.

프론트엔드/src/App.js

import axios from 'axios';
import './App.css';

function App() {

  const testAPI = ()=>{ //연결 테스트
    axios.get('/api/test')
    .then((res)=>{
      console.log(res.data)
    })
    .catch((e)=>{
      console.log(e)
    })
  }

  return (
    <div className="main">
      Hello World !
<button onClick={testAPI}> //버튼 클릭했을 때 콘솔에 데이터 나오면됨 where is my button </button> </div> ); } export default App;

정면으로 테스트해보자


내가 포트 3000에서 실행할 때

그것은 뜨겁다!

나는 잘 일어난다.

그렇다면 빌드할 때 잘 작동합니까?

– 빌드를 시도


왼쪽 터미널은 서버, 중간 터미널은 프런트 데스크, 오른쪽 터미널은 git입니다.

– ctrl+`로 여러 터미널을 연 다음 ctrl+\로 분리하십시오.

– /frontend로 이동

npm run build

백엔드/퍼블릭에서 빌드합니다.


4000개의 연결

포트 4000에 접속하면 서버에서 빌드된 public/index.html이 전송됩니다.

버튼을 누르면?


하다

연결이 완료되었습니다!

이것은 매우 간단합니다.

다음 취미 수업에서 데이터베이스 연결을 시도해야 할 것입니다.