웹스톰에서 노드JS가 자동 실행 안될 때


안녕하세요.
고코더 입니다.


 1. 웹스톰은 컴퓨터에 node가 설치되어 있으면 자동으로 node.js 실행 환경을 설정합니다. 
이유는 잘 모르겠지만 Node가 실행안되는 분이 계시는 경우도 있습니다.



 2. 이럴 경우에는 환경설정 (Ctrl+ Shit + s)를 눌러 실행합니다.
Language & Frameworks을 실행합니다. 그러면 node interpreter 노드 실행 파일을 설정하는 곳과
Package manager를 NPM을 설정하는 곳이 있습니다. 이곳에 자신에 노드를 설치한 폴더로 맞추어 지정합니다. 


 3. 오른쪽 끝에 ...으로 되어 있는 열기 아이콘을 누르고 나오는 팝업에서도 +를 눌러 해당 node.js를 지정하면 됩니다.




마무리


노드가 설치되었다면 자동으로 잡힙니다. 혹시 설치 안하신건 아닌지요?


댓글을 달아 주세요


노드가 아쉬워서 새로 프로그램을 만들었어요. 흔한 천재의 취미


안녕하세요.
고코더 입니다.




 1.수학자 출신 천재 프로그래머 라이언 달은  노드JS 리더 자리를 넘기고 조이엔트 마저 떠났습니다. 그가 창시한 노드JS에 대한 아쉬움이 있었던거 같습니다.  JSConf EU 2018에서 Node.js에 후회했던 10가지(10 Things I Regret About Node.js)를 발표하면서 새로운 서버사이드 언이인 Deno를 발표하였습니다.

 2.Node.js를 창시한 천재 개발자 라이언 달이 생각한 아쉬운 점은 이렇습니다. 

1. Promises를 고집하지 못한 것
2. 보안 문제
3. GN으로 빌드 시스템을 업데이트 하지 못한 것
4. 빌드시스템에 C++대신 FFI를 제공하지 못한 것
5. Package.json으로 인한 NPM 의존도
6. 모듈 시스템에 폴더화로 인한 파일 증가
7. node_modules 구조로 인한 알고리즘에 복잡함 
8. Require 문법에서의 .js를 쓰지 않은 실수
9. index.js의 실수


 3.그리고 C++에서 개발된 노드와 달리 Rust로 개발 하였고 이벤트 루프는 libuv에서 tokio로 교체되었습니다.
typescript를 런타임으로 가지게 되었습니다. 많은 부분에서 변화가 일어났고 새로운 언어가 탄생하였습니다.
하지만 deno가 상용화 될려면 언제가 될지 모릅니다. 혹은 정착된 노드의 자리를 뺐을 수 없을지도 모릅니다.
그렇기 때문에 갑자기 사라질 노드에 대해 걱정하시지 말고 지금 할 수 있는 최선의 언어를 공부하면서
deno를 기대하면 됩니다.

 4. Deno에서 작성된 Hello Deno

const start = async () => {
  const body = new TextEncoder().encode("Hello, Deno!\n");

  for await (const req of serve(":8080")) {
    req.respond({ body });
  }
};


start();

1번라인 : node_modules 폴더에 다운로드된 패키지를 호출하는 방식이 아니라 URL을 지정하는 방식으로 실행시에 해당 장소에서 자동으로 모듈을 설치하는 방식으로 변경 
6번 라인 : promise 도입으로 async, await를 사용할 수 있게 되었습니다. 


마무리


공부할게 너무 많아요 그만 만들어요..


댓글을 달아 주세요


게시판 만들기 delete


안녕하세요.
고코더 입니다. 


이번 시간에는 상세보기 페이지에서 글을 삭제할때에 
해당 비밀번호가 맞다면 해당 글을 수정하는 페이지를 만들어 보겠습니다.


 1. '/delete' board.js 글 삭제 코딩 추가 


 1-1. board.js에 코딩을 추가합니다. 


 1-2. 상세보기를 표현할 라우터를 추가합니다. 
router.post('/delete',function(req,res,next)
{
    var idx = req.body.idx;
    var passwd = req.body.passwd;
    var datas = [idx,passwd];


    var sql = "delete from board where idx=? and passwd=?";
    conn.query(sql,datas, function(err,result)
    {
        if(err) console.error(err);
        if(result.affectedRows == 0)
        {
            res.send("<script>alert('패스워드가 일치하지 않습니다.');history.back();</script>");
        }
        else
        {
            res.redirect('/board/list/');
        }
    });
});


 1-2. 소스 설명 
  • 87번 라인 
    • post로 넘어오는 /delete URI를 바인딩 합니다.
  • 91번 라인
    • 변수로 넘어온 데이터를 배열로 합칩니다. 
  • 93번 라인
    • update 쿼리를 작성 합니다. 글 고유번호와 비밀번호를 조건절로 걸었습니다.
  • 97번 라인
    • affectedRows - 해당 쿼리로 변경된 수에 행을 불러옵니다. 0이면 업데이트가 되지 않았으므로 비밀번호가 틀린 것입니다.
  • 99번 라인
    • 패스워드가 틀렸다면 send로 이전 페이지로 다시 보냅니다.
  • 106번 라인
    • 수정 성공후에 다시 원래 상세 페이지로 이동시킵니다.


삭제는 delete로 글을 완전히 삭제하는 기능입니다. 수정과 거의 동일한 로직이입니다.
상세 페이지에서 요즘은 하나에 페이지에서 가능하도록 개발하는 추세 입니다.


마무리


수정과 너무 비슷해서 글을 안썼는데 요청하는 분이 계시네요.


아메리카노 한잔으로 배우는 Node.js Express 기본편



해당 내용은 제가 집필한 책에 일부를 발취한 내용입니다.
도움이 되셨으면 후원에 마음으로 제 책을 전국 온라인 서점에서 구매해보세요.




댓글을 달아 주세요


게시판 만들기 page


안녕하세요.
고코더 입니다.


이번 시간에는 게시판에 간단한 페이징을 구현합니다. 기존에 만든 리스트 페이지는 글이 추가되면 페이징 없이 아래로 노출되는 기본방식 입니다. 
오늘은 다시 리스트 페이지에 페이징을 추가해볼려고 합니다. 
처음 개발시에 페이징 구현을 하지 않는건 생각보다 많은 로직이 들어가는 기능 입니다. 리스트 개발시에 페이징을 함께 하면 개인적인 경험에서는 지치기 때문에 노드를 조금 익숙하게 받아들인 후에 살펴보는 것이 낫습니다.



 1. board.js 페이징 코딩 추가 


 1-1. board.js에 코딩을 추가합니다. 


 1-2. board.js에 아래 코딩을 추가합니다. 
기존 list는 그대로 두고 page 라는 페이지를 새로 만들어 페이징을 구현합니다. 
게시판 기능을 여러가지로 추가하면서 개선해 나가는 개발 습관을 길러보세요.
router.get('/page/:page',function(req,res,next)
{
    var page = req.params.page;
    var sql = "select idx, name, title, date_format(modidate,'%Y-%m-%d %H:%i:%s') modidate, " +
        "date_format(regdate,'%Y-%m-%d %H:%i:%s') regdate,hit from board";
    conn.query(sql, function (err, rows) {
        if (err) console.error("err : " + err);
        res.render('page', {title: ' 게시판 리스트', rows: rows, page:page, length:rows.length-1, page_num:10, pass:true});
        console.log(rows.length-1);
    });
});

 1-2. 소스 설명 
  • 75번 라인 
    • page라는 URI 접속 경로를 추가 합니다. 이 페이지는 기존 리스트에 페이징이 추가된 기능입니다.
  • 77번 라인
    • 현재 페이지를 req객체를 통해 가져옵니다/
  • 78번 라인 
    • 기존에 사용한 select 구절 그대로 입니다.
  • 82번 라인
    • rows : 데이터베이스 쿼리에 데이터를 랜더링 합니다.
    • page : 현재 페이지를 랜더링 합니다.
    • length : 데이터에 전체 길이를 랜더링 합니다. -1을 한 이유는 DB에 행에 전체는 1부터 시작이지만 for문은 0부터 시작이기 때문에 -1을 합니다.
    • page_num : 한 페이지에 보여줄 행에 갯수를 말합니다.





 2. page.ejs 파일 추가


 2-1. 페이징 ejs 파일을 생성 합니다.
기존에 리스트 페이지를 수정해서 페이징 기능이 가능하도록 만들 것입니다. 


 2-2. 파일안에 내용을 아래처럼 채워주세요.
<!DOCTYPE html>
<html>
<head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css'/>
</head>
<body>
<h1><%= title %></h1>
<a href="/board/write">글쓰기</a>
<table border="1">
    <tr>
        <td>번호</td>
        <td>작성자</td>
        <td>제목</td>
        <td>조회수</td>
        <td>수정일</td>
        <td>등록일</td>
    </tr>
    <%
    for(var i = (page * page_num) - page_num; i < (page * page_num); i++) {
    if(i > length){
        i++;
    }else{
        var data = rows[i]
    %>
    <tr>
        <td><%= i + 1 %></td>
        <td><%= data.name %></td>
        <td><a href="/board/read/<%= data.idx %>"><%= data.title %></a></td>
        <td><%= data.hit %></td>
        <td><%= data.modidate %></td>
        <td><%= data.regdate %></td>
    </tr>
    <% }
    }
    %>
    <tr>
        <td colspan="6">
            <%
            for(var j = 0; j < rows.length / page_num; j++){
            %>
            [<a href="/board/page/<%= j + 1 %>"><%= j + 1 %></a>]
            <%
            }
            %>
        </td>
    </tr>
</table>
</body>
</html>

 2-3. 상단 노출 소스 설명
  • 20번 라인
    • (page * page_num) - page_num : 처음 보여줘야 할 게시물을 찾습니다. 2페이지면 "(2*10)-10=10" 10번째 데이터부터 노출 합니다.
    • page * page_num : 마지막으로 보여질 게시물 번호를 찾습니다. "2*10=20" 20번쨰 데이터까지 노출 합니다. 
  • 21번 라인
    • 현재데이터가 전체보다 크면 i 값을 늘려 종료 합니다.
  • 24번 라인
    • i값이 아직 전체 데이터보다 작다면 data를 담아서 리스트에 노출 합니다. 


 2-4. 하단 페이징 소스 설명
  • 40번 라인
    • length / page_num : 전체 갯수와 페이지 노출 갯수를 나누어 총 페이지를 계산 합니다.
  • 42번 라인
    • 계산된 페이지 만큼 노출 합니다. 




 3. 결과 화면 


 3-1. 게시판에 페이징이 추가되어 페이지를 이동하여 원하는 데이터를 한눈에 볼수 있게 되었습니다.


 3-2. 페이지 이동시에 URI에는 맨뒤에 숫자에 따라 페이지가 나타나고 번호도 순서에 따라 노출합니다. 



마무리


간단한 페이징 방법까지 배워봤습니다.




아메리카노 한잔으로 배우는 Node.js Express 기본편



해당 내용은 제가 집필한 책에 일부를 발취한 내용입니다.
도움이 되셨으면 후원에 마음으로 제 책을 전국 온라인 서점에서 구매해보세요.



댓글을 달아 주세요


router req, res, uri 쉬운 설명


안녕하세요.
고코더 입니다.


제 노드 강의를 따라온분들이 이제 질문이 생기기 시작했습니다.
좋은 현상입니다. 제가 예제로 노드가 익숙해지시면 설명드리려 했던 라우터에 대해 말씀드릴려고 합니다. 



 1. 라우터 URI 경로



 1-1. 매번 익숙하게 선언했던 라우터 메소드 뒤에 URI 가 있습니다.
계속 이부분을 루트 '/'로만 사용중이었는데요.
router.get('/', function (req, res) {
이 부분은 라우터 이후에 원하는 URI로 경로를 받을 수 있습니다.
app.use('/', indexRouter);로 설정된 라우터 기준으로 말씀드리겠습니다.

 1-2. 접속 : http://사이트주소/gocoder
router.get('/gocoder', function(req, res) {
});

 1-3. 접속 : http://사이트주소/gocoder/itexpress
router.get('/gocoder/itexpress', function(req, res) {
});

 1-4. 접속 : http://사이트주소/gocoder/itexpress/*(모든데이터)/
router.get('/gocoder/itexpress/:id/', function(req, res) {
});

 1-5. 접속 : http://사이트주소/gocoder/itexpress/*(모든데이터)/*(모든데이터)
router.get('/gocoder/itexpress/:id/:cate/', function(req, res) {
});

이런식으로 원하는 형식에 URI로 요청을 받을 수 있습니다. 그리고
패턴과 정규식으로도 요청을 얻어 낼 수 있습니다.

 1-6. 접속 : http://사이트주소/go(ooooo)coder
router.get('/go+coder', function(req, res) {
});

 1-7. 접속 : http://사이트주소/go(itexpress)coder
http://사이트주소/go(모든문자와 길이)coder
router.get('/go*coder', function(req, res) {
});

 1-8. 접속 : http://사이트주소/(g가 포함된문자)/
router.get(/g/, function(req, res) {
});




 2. req (요청객체) / request



 2-1. 우리가 흔히 알고 있는 request 객체 입니다. 
req로 사용하지 않아도 되지만 req로 사용을 많이 합니다. 
기존에 언어처럼 요청을 받는데 이용한다.

 2-2. 많이 사용하는 req 객체

req.params : 객체는 파라미터에 데이터를 가져온다.
req.query : 쿼리스트링 파라미터에 전부를 가져온다.
req.headers : header 값을 가져온다.
req.cookies : 쿠키값을 확인한다. 
req.ip : 프론트 아이피를 가져온다
req.protoco : 프로토콜 http? https? 인지 가져온다
req.url : 전체 URI 정보를 가져온다.



 3. res (응답 객체) / response

 3-1. 우리가 사용하는 response와 같다.
역시 res대신 다른 변수로 사용 가능하다.

 3-2. 많이 사용하는 res 객체

res.send() : 클라이언트에 응답을 보낼 수 있다. 디버깅에서 많이 사용
res.json() : 클라이언트에 자동으로 json을 만들어준다
res.jsonp() : 클라이언트에 자동으로 jsonp을 만들어준다
res.redirect() : 리다이렉트, 페이지를 이동 시킨다.



마무리


express에서 많이 사용할 객체들이니
눈으로 익혀두자




아메리카노 한잔으로 배우는 Node.js Express 기본편



해당 내용은 제가 집필한 책에 일부를 발취한 내용입니다.
도움이 되셨으면 후원에 마음으로 제 책을 전국 온라인 서점에서 구매해보세요.




댓글을 달아 주세요


require() 파일 참조하기 / include


안녕하세요.
고코더 입니다.


오늘은 외부 참조 파일을 만들어 공통으로 쓰는 방법을 실습해보려고 합니다. 
인스턴스를 참조 하도록 도와주는 require() 함수를 이용해
반복으로 선언하는 코드들을 낭비하지 않도록 만들 수 있습니다.

지난 시간에 간단한 mysql을 연결하여
기본예제를 만들어 보았습니다.
-> Node.js - Mysql 연결 기본예제




mysql 을 연결할때마다 소스상에 DB커넥션 정보를 페이지마다.  기록하면은 유지보수도 어려워지고 보안상에 문제도 있습니다. 이걸 특정 소스에 기록하고 불러와서 사용하도록 개발해보겠습니다.



 1. 데이터베이스 접속 정보 참조 파일 db_info.js


 1-1. 데이터베이스에 접속 정보를 관리할 소스를 생성하여 반복작업을 줄여보겠습니다.
host    :'localhost',
port : 3306,
user : 'root',
password : 'gocodermysql',
database:'nodedb'

 1-2. 프로젝트에 폴더를 하나 생성 합니다. New -> Directory 폴더명은 db 입니다.


 1-2. 그럼 이렇게 db라는 폴더가 프로젝트에 보이게 됩니다.


 1-3. 첫번째로 만들 소스는 db 접속 정보를 모아둘 페이지입니다.
소스명은 db_info.js 입니다. 


 1-4. 스스 안에 내용은 이렇게 코딩 합니다. 로컬, 실서버, 스테이징, 개발 서버에 정보를 따로 기록 합니다. 
저희는 학습이니 local만 사용하게 되겠죠.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module.exports = (function () {
    return {
        local: {
            host: 'localhost',
            port: '3306',
            user: 'root',
            password: 'gocodermysql',
            database: 'nodedb'
        },
        real: {
            host: '',
            port: '',
            user: '',
            password: '',
            database: ''
        },
        staging: {
            host: '',
            port: '',
            user: '',
            password: '',
            database: ''
        },
        dev: {
            host: '',
            port: '',
            user: '',
            password: '',
            database: ''
        }
    }
})();

cs


 1-5. 소스설명
1번 라인 : 모듈로 사용할 수 있도록 만들어줍니다.
3번 라인 : 해당 변수안에 배열로 접속 정보를 저장합니다. 



 2. 데이터베이스 연결 참조파일 : db_conn.js


 2-1. 정보 정보를 모아두었다면 연결 관리를 할 소스를 생성합니다.
데이터베이스 연결을 참조파일 하나로 정리하는 역할을 할 소스를 만들어 보겠습니다.
db폴더에 db_conn.js를 생성 합니다. 


 2-2. 내용은 이렇게 코딩 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var mysql = require('mysql');
var config = require('./db_info').local;
 
module.exports = function () {
    return {
        init: function () {
            return mysql.createConnection({
                host: config.host,
                port: config.port,
                user: config.user,
                password: config.password,
                database: config.database
            })
        }
    }
};

cs

 2-3. 소스해석
1번 라인 : mysql 인스터스를 가져옵니다.
2번 라인 : db 접속 정보를 가져옵니다. 
7~12번라인 : mysql에 접속 합니다. 



 3. 사용 방법


 3-1. 이전에 만들었던 mysql 연결 기본예제에 소스를 비교해보겠습니다.
소스가 가벼워지고 가독성 좋아졌는지 확인해보세요.
왼쪽이 참조를 활용한 데이터베이스 연결 화면 
오른쪽이 이전에 만든 mysql.js 실습예제 화면 
왼쪽 3번라인 : 서버가 실행된 곳은 bin 폴더입니다. 상대참조로 폴더를 찾아야 합니다.



 3-2노드도 역시 다른 언어처럼
유지보수가 유리할 수 있도록 최대한 객체지향적으로 개발합니다.


마무리


require를 잘사용해야 완성도가 높아집니다.


아메리카노 한잔으로 배우는 Node.js Express 기본편



해당 내용은 제가 집필한 책에 일부를 발취한 내용입니다.
도움이 되셨으면 후원에 마음으로 제 책을 전국 온라인 서점에서 구매해보세요.





댓글을 달아 주세요

  • 감사 2019.07.31 23:03  댓글주소  수정/삭제  댓글쓰기

    노드 강의 중에
    학습자가 듣기 가장 쉽게 써주시네요
    재능있는 강의자십니다.
    업데이트도 빨라서
    하나 강의다보고 들어오면
    업데이트 되있고
    감동입니다. 수강료라도 드리고 싶어요.
    감사해요!


노드에서 MySQL 설치 방법


안녕하세요.
고코더 입니다. 


오늘은 데이터베이스를 쓰기 위해 첫번째로 해야 하는 Mysql 설치 방법을 함께 알아보려고 합니다.
노드를 배우는 강의이고 개인에게는 완전히 무료이면서 설치가 가벼워서 다른 DBMS를 제치고
번 강의에서는 MySQL를 사용해보겠습니다. 

설치 방법은 두가지가 있습니다. 
그리고 npm 설치는 모두 이 과정과 동일 합니다.



 1. 커맨드(CMD)로 설치


 1-1. 커맨드 라인에서 자신에 프로젝트로 이동 합니다.
저랑 계속 함께 개발중이라면 해당 폴더 입니다.
D:\node\gocoder

 1-2. 프로젝트에서 npm을 설치하는 명령어를 입력합니다.
그럼 순신각에 폴더와 파일을 생성 하면서 끝입니다. 
npm install mysql


 1-3. node_modules에 mysql 이라는 폴더가 생성 되어 있습니다. 
D:\node\gocoder\node_modules



감이 오시겠지만 npm 설치는 곧 모듈 다운로드 입니다. 


 2. Webstrom 으로 설치 


 2-1. 커맨드라인 설치 방법은 원리를 알려드릴려고 한 방법이며
저와 함께 강의를 보시는 분은 웹스톰으로 설치를 한번 해보시길 바랍니다.
프로그램에서 file->setiings 로 들어갑니다. (단축키 Ctrl+Alt+S)


 2-2. 그리고 languages & Frameworks에서
Node.js and NPM 으로 들어간 다음 + 버튼을 누릅니다. 


 2-3. 그리고 여기서 mysql을 선택하고 Install Package를 클릭 합니다. 


 2-4. 그럼 바로 install 과정을 실행합니다. 
웹스톰에서 위에서 배운 npm 명령어를 날리는 과정을 대신 해줍니다.


 2-5 인스톨이 완료되었다는 성공 창이 나타납니다. 
npm 설치를 마우스 클릭으로 완료 했습니다. 


 2-6. 이제 프로젝트에 package.josn 파일을 확인을 합니다.
D:\node\gocoder\package.json


 2-7. 그럼 mysql 이 패키지 파일에 종속성으로 
자동으로 기록되어 포함되어 있는걸 확인 할 수 있습니다. 




마무리


Mysql 설치 방법을 배웠지만 
모든 npm 설치 하는 과정은 동일 합니다.




아메리카노 한잔으로 배우는 Node.js Express 기본편



해당 내용은 제가 집필한 책에 일부를 발취한 내용입니다.
도움이 되셨으면 후원에 마음으로 제 책을 전국 온라인 서점에서 구매해보세요.




댓글을 달아 주세요


form을 이용한 기본 예제


안녕하세요.
고코더 입니다.


이전에 라우터와 뷰단에 소스를 만들고
어떻게 사용하는지 아주 기초적인 방법을 배웠습니다.
이번 시간에는 form으로 전송한 데이터를
node.js에서 받아 간단하게 josn으로 출력하도록 코딩을 해보겠습니다.



 1. views에서 form 태그를입력


 1-1. form.ejs 에 아래 HTML을 추가 합니다. 이전에 입력되어 있는 HTML 밑에 추가합니다. 
소스는 폼태그를 이용해서 이름,블로,홈페이지를 입력하는 input 박스에 입력을 받게 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form id="Form" action="/form" method="post">
    <table width="400">
        <tr>
            <th>이름</th>
            <td><input type="text" name="name" id="name" size="10" maxLength="10"></td>
        </tr>
        <tr>
            <th>블로그</th>
            <td><input type="text" name="blog" id="blog" size="20" maxLength="20"></td>
        </tr>
        <tr>
            <th>홈페이지</th>
            <td><input type="text" name="homepage" id="homepage" size="20" maxLength="20"></td>
        </tr>
        <tr>
            <th>전송</th>
            <td><input type="submit"></td>
        </tr>
    </table>
</form>



 1-2. 코드 리뷰 
14라인 : action 값은 /form 입니다. 이전 시간에 만든 라우터로 전송할 것 입니다.
15라인 : Method는 post 이어야 합니다. get은 이미 이전에 라우터에 사용중입니다. 
30라인 : submit 버튼은 자동으로 해당 form을 전송해주는 역할을 합니다. 


 1-3. 제출 버튼을 누르면 자가호출로 form.js로 데이터를 전송합니다.




 2.라우터에서 해당 POST 값을 받아 json으로 출력


 2-1. form에서 넘어온 값을 받아와서 라우터에서 프로그래밍 하여
JSON으로 처리하는 방법을 다룹니다. 
form.js에 아래 코드를 추가로 입력해주세요.
1
2
3
router.post('/',function(req,res,next){
    res.json(req.body);}
);



 2-2. 코드 리뷰 
12라인 : method를 post로 전송하기에 post로 받아야 합니다. 같은 루트로 접근된다고 하더라도 post인지 get인지에 따라 달라집니다.
13라인 : 해당 데이터를 josn 함수를 자동으로 json 형식으로 노출 시킵니다. 


 2-3. 코딩에 대한 결과 값을 확인하면 요청한 데이터가 json으로 출력 되고 있습니다.
자가 호출로 get 일 경우에는 데이터를 보내는 페이지이고
post일 경우에는 로직을 처리하는 페이지로 개발 되었습니다. 



마무리


슬슬 생각보다 쉽다는 
자신감이 생길거라 생각 됩니다.




아메리카노 한잔으로 배우는 Node.js Express 기본편



해당 내용은 제가 집필한 책에 일부를 발취한 내용입니다.
도움이 되셨으면 후원에 마음으로 제 책을 전국 온라인 서점에서 구매해보세요.



댓글을 달아 주세요


Node.js에 사용할 framework


안녕하세요.
고코더 입니다.


지난 시간에 node.js를 설치 하고 
hello nodejs를 출력해보았습니다.

오늘은 간단하게 노드 프레임 워크 대해서 살펴보려고 합니다. 

자바 개발시에 스프링이나 스트럭처를 사용하지 않고
서블릿으로 개발한다면 개발기간도 늘어나고 소스에 양도 증가하고
반복적이고 불필요한 작업이 늘어 날것입니다. 

노드도 이처럼 프레임워크를 사용하여 개발 하는 경우가 많습니다.
그래서 오늘은 가장 대표적인 3가지에 프레임워크를  
설명드리려고 합니다. 



 1. Express



노드에 '스프링' 같은 존재라고 생각하면 됩니다.
익스프레스는 한국에서 가장 많이 사용하는 프레임워크 입니다. 
가장 오랫동안 개발하고 빌드업 되어오고 있습니다.
커뮤니티 또한 가장 활발 합니다. 즉 레퍼런스 문서가 많습니다.
그래서 숙련하기 가장 쉬운 프레임 워크 입니다.

제 강의에서도 이녀석을 통해 게시판을 만들것입니다. 
(제 블로그 이름이랑 비슷해서 좋네요 IT Express)
그러나 메모리 점유율이 높다는 단점이 보고 되고 있으나
대형 사이트가 아닌 곳에서 특히 학습에서 느끼기에는 어려운 단계입니다.
노드에서는 웹 미들웨어에 표준이라고 생각하시면 됩니다.

간단한 예제




 2. Koa 



장점은 소스 길이가 다른 프레임워크보다 짧게 나와 한눈에보기 좋습니다.
ES6를 사용할 수 있는 장점이 있습니다. 사용 빈도가 가장 낮은 프레임워크입니다.
가장 작고 가벼운 특징이 있습니다. 

간단한 예제




 3. Hapi



소스 길이가 길다는 단점이 있습니다.
그만큼 설정 할 수 있는 옵션이 많아 노드를 사용하는건지 자바를 사용하는건지
헷갈립니다. 복잡하고 거대한 프로그램에 어울린다고 합니다. 
확장가능한 API를 작성할때 좋지만  2017년도 보고서에 따르면 성능면에서 
가장 최하점을 받은 기록이 있다고 합니다. 어렵고 난이도가 높은
프레임 워크라고 생각합니다. 

간단한 예제




평가


익스프레스외에 나머지 프레임 워크는
설치 후 간단한 예제 실습 후에 느낀점을 적었습니다.
모든 프레임워크를 공부하는게 가장 좋겠지만
한가지를 마스터 한다면 노드에 철학을 익힐 수 있습니다.

참조 URL : nodesource.com/blog/Express-Koa-Hapi


마무리

저는 익스프레스로 노드 강의를 이어 나가겠습니다.



아메리카노 한잔으로 배우는 Node.js Express 기본편



해당 내용은 제가 집필한 책에 일부를 발취한 내용입니다.
도움이 되셨으면 후원에 마음으로 제 책을 전국 온라인 서점에서 구매해보세요.





댓글을 달아 주세요