Node.js

node.js와 mongoDB로 웹 만들기 (3) 로그인, 회원가입

gamzaggang7 2023. 1. 12. 01:37
728x90

* 개발환경 - 윈도우, VS Code 

 

1. jquery, bootstrap cdn 가져와서 index.ejs에 추가

<!DOCTYPE html>
<html>
    <head>
        <meta charest="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
            integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
        <title>Document</title>
    </head>
    <body>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous">
        </script>
    </body>
</html>

앞으로 새 ejs 파일 만들 때 index.ejs 파일 복사

* cdn: 콘텐츠 전송 네트워크. 웹사이트 접속자가 콘텐츠를 다운로드할 때 자동으로 가장 가까운 서버에서 다운할 수 있도록 함.

728x90

 

2. login.ejs 파일 만들고 로그인 요소 추가.

<div class="container mt-4">
    <form action="/login" method="POST">
        <fieldset>
            <legend>로그인</legend>
            <div class="mb-3">
                <label for="id" class="form-label">아이디</label>
                <input type="text" id="id" class="form-control" name="id">
            </div>
            <div class="mb-3">
                <label for="pw" class="form-label">비밀번호</label>
                <input type="password" id="pw" class="form-control" name="pw">
            </div>
            <button type="submit" class="btn btn-outline-dark">로그인</button>
            <a href="/member/register" class="btn btn-outline-success">아이디가 없나요?</a>  <!--회원가입 페이지로 이동-->
        </fieldset>
    </form>
</div>

 

 

3. server.js 에서 라우팅.

app.get('/member/login', (req, res)=>{
    res.render('login.ejs');
})

* 라우팅: 네트워크에서 경로를 선택하는 프로세스

app.get('/경로') 를 통해 ejs 파일로 경로를 지정함.

 

4. localhost:8080/member/login 으로 접속

그냥 /login 으로 지정해도 됨.

express에서 제공하는 router 기능으로 라우팅 분리할 거라 /member/login으로 함.

 

 

5. server.js에 라우터 추가.

app.get('/member/register', (req, res)=>{
    res.render('register.ejs');
})

register.ejs는 회원가입 페이지로 쓸거. 코드는 일단 로그인 코드 그대로 복사함

server.js에 코드가 더 많아질거라 위같은 코드들을 따로 빼줄 예정

 

6. node 프로젝트에 routes 폴더 만들고 그 안에 member.js 파일 생성.

그 안에 아래 코드를 작성한다.

var router = require('express').Router();

router.get('/login', (req, res)=>{
    res.render('login.ejs');
})

router.get('/register', (req, res)=>{
    res.render('register.ejs');
})

module.exports = router;

server.js에서 썼던 코드에서 app을 router로 바꾸고, 경로에서 /member를 뺐다.

 

 

7. server.js에 아래 코드 작성.

app.use('/member', require('./routes/member.js'));  
   // /member로 시작되는 경로가 요청될 경우 routes 폴더의 member.js 에 있는 라우터를 사용

이제 server.js에 있는 라우터들은 필요없으니까 삭제한다.

테스트해보니 잘 작동된다.

이렇게 하면 프로젝트가 더 깔끔하다.

 

728x90