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  댓글주소  수정/삭제  댓글쓰기

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