[Node.js] Zoom 클론코딩 - 세팅편

2022. 6. 7. 16:49·Node.js/실험실
반응형

0. 들어가며

WebSocket 공부를 위해서 JavaScript와 Node.js를 사용해서 Zoom 클론 코딩을 할 계획이다. 

사용하는 준비물로는 Node.js, JavaScript, Socket.io를 사용할 예정이다. 

 

1. Server 세팅

프로젝트 폴더를 만들고 초기 세팅을 진행한다. 

npm init -y
 npm i nodemon @babel/core @babel/cli @babel/node @babel/preset-env -D

코드를 변경하면 자동으로 새로고침이 되길 원하기 때문에 nodemon을 설치해준다. 

 

또 바벨 설정을 위해서 필요한 패키지들도 함께 다운로드한다. 

 

{
  "ignore": ["src/public/*"],
  "exec": "babel-node src/server.js"
}

nodemon.json을 만들어서 exec 명령어를 사용하면 서버가 실행되게 작업하였다. 

단, src/public 폴더에 있는 파일을 수정할 경우에는 재시작되지 않게 설정했다. 

 

{
  "presets": ["@babel/preset-env"]
}

바벨 설정도 마무리해준다. 

 

{
  "name": "zoom-clone",
  "version": "1.0.0",
  "description": "",
  "keywords": [],
  "author": "",
  "license": "ISC",
  "scripts": {
    "dev": "nodemon"
  },
  "devDependencies": {
    "@babel/cli": "7.17.10",
    "@babel/core": "7.17.10",
    "@babel/node": "7.17.10",
    "@babel/preset-env": "7.17.10",
    "nodemon": "2.0.16"
  }
}

package.json에 있는 script 명령을 모두 지우고 dev를 추가해 nodemon.json에 설정해둔 명령어가 실행되게 했다. 

 

npm i express pug

이제 서버를 가동하기 위해서 express 패키지를 다운로드하였고, 탬플릿 패키지로 pug를 다운로드하였다. 

 

// src/server.js
import express from "express";

const app = express();

app.listen(3000);

server.js에서 실행 시 3000번 포트에 서버가 실행되게 추가하였다.

 

2. FrontEnd 세팅

/src/views/home.pug
doctype html
html(lang="en")
    head
        meta(charset="UTF-8")
        meta(http-equiv="X-UA-Compatible", content="IE=edge")
        meta(name="viewport", content="width=device-width, initial-scale=1.0")
        title Zoom Clone
        link(rel="stylesheet", href="https://unpkg.com/mvp.css")
    body 
        header
            h1 Zoom

        main 
            h2 Welcome to Zoom
        script(src="/public/js/app.js")

home.pug를 만들어서 경로에 접속 시 웹사이트에 나올 화면을 임의로 작성했다.  

그리고 앞으로 웹소켓 설정을 위해서 script로 app.js 파일을 추가해두었다. 

 

import express from "express";

const app = express();

app.set("view engine", "pug");
app.set("views", __dirname + "/views");
app.use("/public", express.static(__dirname + "/public"));

app.get("/", (req, res) => res.render("home"));
app.get("/*", (req, res) => res.redirect("/"));

app.listen(3000);

Front는 pug를 사용해서 구성하기 위해서 server.js에 set을 사용해서 view engine을 설정하고 views 폴더를 정했다. 

그리고 자바스크립트 파일이 있는 public 폴더를 static으로 설정해

사용자가 /public으로 가면 __dirname + '/public' 폴더가 보이게 설정했다. 

 

마지막으로 ' / ' 경로에 접속 시 만들어둔 home.pug가 랜더링 되게 설정했다. 

어떤 경로로 접속하더라도 ' /* '을 통해서 ' / ' 로 리다이렉트 시켰다. 

npm run dev로 실행해보면 제대로 pug 파일이 랜더링 된 것을 확인할 수 있다. 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Node.js > 실험실' 카테고리의 다른 글

[Node.js] Express ORM 세팅해보기  (0) 2022.10.09
[Node.js] Express에 Webpack 구현하기  (1) 2022.09.28
[Node.js] Express set "views"  (2) 2022.09.26
[Node.js] Zoom 클론코딩 - 채팅방편  (1) 2022.06.21
[Node.js] Zoom 클론코딩 - 채팅편  (1) 2022.06.08
'Node.js/실험실' 카테고리의 다른 글
  • [Node.js] Express에 Webpack 구현하기
  • [Node.js] Express set "views"
  • [Node.js] Zoom 클론코딩 - 채팅방편
  • [Node.js] Zoom 클론코딩 - 채팅편
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    ReactNative
    영어회화
    바질
    바질 키우기
    CSS
    네이버 부스트캠프
    react
    next.js
    redux
    Babel
    타입스크립트
    리얼클래스
    덤프
    javascript
    CCNA
    자바스크립트
    프로그래머스
    영어독학
    typescript
    알고리즘
    webpack
    리액트
    Docker
    네트워크
    Node.js
    리얼학습일기
    ChatGPT
    식물
    타일러영어
    다이소
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[Node.js] Zoom 클론코딩 - 세팅편
상단으로

티스토리툴바