티스토리 뷰
- 파일의 분리
메인 파일의 코드중에서 독립적인 기능은 별도 파일로 분리 가능, 메인 파일에서 전체적인 순서나 흐름만 제어 한다. 이렇게 분리된 파일을 노드에서는 모듈 이라고 부른다.
- export 전역객체
각각의 기능을 분리 시킬 떄는 단순히 별도의 파일에 코드를 나누어 놓는게 끝나는것이 아니다. 모듈 파일을 불러와서 사용할 수 있는 방법도 함께 만들어 준다.
노드는 CommonJs의 표준 스펙에 따라 모듈을 사용할 수 있게 한다. 이때 사용하는것이 export
- Node.js에서 모듈 사용하는 대표적인방식
Main.js VS module1.js
1. Main.Js
var module1 = require('module1');
module1.함수 이름();
2. module1.js
exports.함수이름 = 함수 정의;
=> 모듈을 만들 떄는 module1.js처럼 별도의 자바스크립트 파일을 만든후 그 코드에서 exports 객체를 사용하는데, exports 객체의 속성으로 변수나 함수를 지정하면 그 속성을 main.js와 같은 메인 자바스크립트 파일에서 불러와 사용할 수 있다.
모듈을 불러 올때는 require() 메소드 사용한다
모듈로 만들어 둔 파일의 이름을 이 메소드의 파라미터로 전달 한다. require() 메소드를 호출하면 모듈 객체가 반환되는데, 모듈에서 exports 객체에 설정한 속성들은 이 모듈 객체를 통해 접근 할 수 있다.
*주의 할점*
exports 외에 module.exports를 사용 할 수도 있다. exports에서는 속성을 추가 할 수 있어 여러 개의 변수나 함수를 각각의 속성으로 추가 할 수 있음. 이에 반해
module.exports에는 하나의 변수나 함수 또는 객체를 직접 할당 해야 한다. 일반적으로는 객체를 그대로 할당하며, 이렇게 할당한 객체안에 넣어둔 변수나 함수를 메인파일에서도 사용 할 수 있다.
예) module1.js VS module2.js
<module1.js 파일>
// 변수나 함수를 직접 할당 하지 않아도 된다.
exports.add(function(a,b){
return a+b;
}
exports.multiply = function(a,b){
return a * b;
}
<module2.js 파일>
var calc = {}; // 변수나 함수를 직접 할당
calc.add = function(a,b){
return a+b;
}
calc.multiply = function(a,b){
return a * b;
}
- 언제 exports를 쓰고 module.exports를 쓸까?
exports와 module.exports 라는것을 사용한다 라는것을 일단 알고 있고, '어떤것을 사용하느냐에 따라 메인파일에서 모듈을 불러와 사용하는 방식이 약간 다를 수 있다.' 라는것만 알고 가면 된다(추후 공부 내용)
- 자바 스크립트의 함수 호출 방법
예) var calc = {};
calc.add = function(a,b){
return a + b;
}
console.log('호출 : %d", calc.add(10,20));
호출 방법 => (객체). 함수 이름 . 소괄호(파라미터);
- 위의 예제를 모듈 분리를 해서 만들어 볼까요?
<cal.js 파일>
exports.add = function(a,b){
return a+b;
}
<main.js 파일>
var calc = require('./cal');
// cal.js 파일을 require()함수의 파라미터로 모듈 파일의 이름을 전달하는데, 파일 의 이름 전체를 다 사용하지 않고, 확장자를 뺸 cal라는 이름만 사용한다. ./ 를 붙인것을 보면 파일 이름은 상대패스로 지정하였음.이렇게 불러들인 모듈은 calc 변수에 할당!
console.log('모듈로 분리한후 - calc.add 함수 호출 결과 : %d',calc.add(10,10));
// ./cal의 모듈이 추가되었으므로 add 메소드를 사용 할수 있게 되었다 따라서, calc 변수에 있는 모듈의 객체인 add()메소드를 사용해서 올바른 결과값이 나오는것을 확인할 수 있다.
- module.exports로 메인 파일에 더하기 함수를 호출하면 어떤 차이점이 있을까? (위에와 비교 해보자)
<cal2.js>
var cal = {};
// 직접 변수나 함수에 할당해줘야하므로 변수 선언이 되었다 var cal = {};
cal.add = function(a,b){
return a+b;
}
module.exports = cal;
// 할당된 변수를 module.exports에 할당 시킨다.
<main.js>
var calc = require('./cal2');
console.log('모듈로 분리한후 - calc.add 함수 호출 결과 : %d',calc.add(10,10));
// cal2에 있는 js 파일의 모듈을 읽어 들여 calc 변수에다 할당 시킨다. cal2의 파일에 있는 모듈을 할당 받았으므로 add 메서드를 사용할 수 있다. calc의 변수에 담긴 add를 사용 하면 된다.
- 외장 모듈 사용 하기
외장 모듈이란? 이미 다른 사람이 시스템 환경 변수를 접근 할 수 있는 모듈을 만들어 두었으므로 우리는 그 모듈을 불러와서 간편하게 사용 가능.
앞서 해결 하지 못했던 OS 환경 변수 접근 문제를 모듈로 해결 해볼것이다.
시스템 환경변수에 접근 할 수 있는 모듈의 이름은?
require('nconf');
예)
var nconf = require('nconf');
nconf.env();
console.log('OS 환경 변수의 값을 : %s',nconf.get('OS'));
이렇게 사용하면 os 환경변수의 값을 출력할 수 있다. 여기서 주의 할점은
$npm install nconf 패키지를 설치해주어야 한다. 아니면 패키지가 없다고 오류가 날것이다.
- json 파일 생성해보기
$npm init
명령어를 사용해서 nconf 폴더에다가 init명령어를 입력하면 입력값을 입력하면 그 폴더에 package.json 파일이 생성 될 것이다.
pakage.json 파일 안에는 프로젝트에 대한 기본 정보가 들어 있고, nconf 모듈을 삭제한후 다시 설치하는데, 다시 설치 할때에는 npm명령어에 --save 옵션을 추가 하면 된다.
$npm install 명령어 사용시 package.json 파일에 있는것을 다른폴더로 옮긴후 npm install 안에 있는 패키지가 한번에 설치 된다.
'Node.js' 카테고리의 다른 글
[node.js]생활코딩 정리 1 - OT 및 설치 (0) | 2017.09.16 |
---|---|
[node.js]내장 모듈 사용하기 (0) | 2017.09.15 |
[node.js]프로세스 객체 간단하게 살펴보기 (0) | 2017.09.15 |
[node.js]콘솔에 로그 뿌리기 (0) | 2017.09.15 |
[node.js]브라켓 설치하기 (0) | 2017.09.15 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코드엔진
- Controller
- 리버싱
- 텐서플로우
- 학교
- TensorFlow
- 노드
- 복습
- 머신러닝
- 개발하는 관광이
- C언어
- 백준알고리즘
- 알고리즘
- Android
- programming
- 안드로이드
- 백준
- Spring
- MVC
- Algorigm
- 스프링
- node
- node.js
- 초보자를 위한 C언어 300제
- db
- BFS
- 프로그래밍
- C langauge
- 감자개발자
- 감자코딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함