| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- C#크롤링
- node.js
- 해시함수
- 대칭키암호시스템
- 공개키암호시스템
- fullcalendar
- 서드파티모듈
- 국제화
- 대칭키암호화
- react
- 무결성
- 대칭키알고리즘
- SQL
- 전자서명
- jQuery
- NPM
- Spring
- AndroidStudio
- 암호학
- JavaScript
- vscode
- c:forEach
- JSTL
- RequestMethod.POST
- jsx
- MySQL
- 동적쿼리
- c:choose
- mybatis
- Java
- Today
- Total
Today Yewon Learned
[Node.js] 모듈(module) 본문
모듈(Module)
- 전체를 이루는 부품 하나하나
- JavaScript 파일 하나
- 프로그램 : 모듈들의 모임
모듈의 핵심 Module Load
- 하나의 모듈에서 다른 모듈의 기능을 가져와 사용하는 것
- Module Load 두 가지 방법 존재
1. 공개하고 싶은 것들을 하나씩 exports로 공개
2. 공개하고 싶은 것들을 모아서 하나의 객체로 만들고 module.exports로 객체를 통째로 공개
■ math-tools.js 모듈 추가
function add(a, b) {
return a + b;
}
exports.add = add;
export '내보내다'
- 모듈 내부의 것들을 외부로 공개해야 외부에서 사용 가능
- exports.add = add라는 함수를 모듈 외부에서도 add라는 이름으로 공개한다는 의미
■ main.js 모듈 추가
let m = require('./math-tools.js');
console.log(m.plus(1, 2));
require '요구하다'
- 모듈을 load하는 함수
■ main.js 모듈과 math_tools.js 모듈이 같은 디렉토리 안에 있는 경우
let m = require('./math-tools.js');
./ 기호로 main.js 모듈을 기준으로, 현재 디렉토리 안의 math_tools.js 모듈이라는 걸 나타냄
■ main.js 모듈과 math_tools.js 모듈이 다른 디렉토리 안에 있는 경우
let m = require('../modules/math-tools.js');
..은 부모 디렉토리를 나타내는 상대 경로
모듈 안에 있는 것들을 하나씩 공개

여러개의 함수들을 각각 외부에 공개하기 위해 모두 exports 하지않고, 공개하고 싶은 것을 하나의 객체로 만들고,
그 객체를 공개할 수 있음
하나의 객체로 모아서 외부에 공개하기

모듈 안에 있는 것들을 하나씩 공개 → exports 키워드 사용
공개하고 싶은 것들을 모은 객체를 외부에 공개 → module.exports 키워드 사용
모듈의 종류
1. 내가 직접 만든 모듈
2. 이미 만들어져 있는 모듈
- 코어 모듈 : Node 실행파일 안에 이미 포함되어있는 모듈 (Node 설치 후 바로 사용 가능)
- 서드파티 모듈 : 여러 개발자, 회사들이 만들어서 인터넷 공개 저장소에서 제공하는 모듈
- Node.js api 공식 문서: https://nodejs.org/dist/latest-v12.x/docs/api/
■ 코어 모듈
- 경로 표시 필요 없음
코어 모듈 예시)

- fs : 'file system'의 줄임말로, 파일이나 디렉토리에 관한 작업을 할 때 꼭 필요한 모듈
- readdirSync() : 특정 디렉토리 안에 있는 파일 목록들을 배열 형식으로 리턴하는 함수


- writeFileSync() : 'new'라는 파일에(없으면 생성) 'Hello Node.js!'라는 내용을 쓰는 함수
Node.js와 브라우저의 차이
- API (Application Programming Interface) : 어떤 플랫폼이나 실행환경 등에서 제공하는 인터페이스 , 특정 환경에서 자유롭게 가져다 쓸 수 있는 함수나 객체 등을 의미
- 엔진 종류가 다름
| Node.js | 브라우저 |
| 시각적 표현 필요 X → UI 관련 API X | 시각적 표현 필요 O → UI 관련 API O |
| window, document 객체 X | window, document 객체 O |
| 컴퓨터 제어 API O - 파일 생성, 컴퓨터 정보 확인 등 | 컴퓨터 제어 API X |
| V8 엔진 | FireFox - SpiderMonkey 엔진, Edge,Chrome - V8 엔진 |

■ 서드파티(3rd party) 모듈
- 다른 개발자나 회사들이 만들어서 인터넷상의 공개 저장소에서 제공하는 모듈

- npm : 서드파티 모듈에 관련된 작업을 할 때 필요한 프로그램

서드파티 모듈 설치
- npm install 모듈명
- 서드파티 모듈 설치시, 작업하던 디렉토리 안에 package-lock.json파일과 node_modules라는 디렉토리가 생성됨

- package-lock.json : 설치된 서드 파티 모듈에 관한 정보
- node_modules : 실제 서드파티 모듈들이 설치되는 디렉토리


- 모듈 설치시, 모듈의 이름이 파일이 아니라 디렉토리 이름인 것을 확인할 수 있음
[참조] : Codeit
'javascript > Node.js' 카테고리의 다른 글
| [Node.js] 서버와 클라이언트 (0) | 2021.12.04 |
|---|---|
| [Node.js] 이벤트에 추가 정보 함께 전달하기 (0) | 2021.12.04 |
| [Node.js] 비동기 프로그래밍과 이벤트 (0) | 2021.11.17 |
| [Node.js] 비동기 프로그래밍과 콜백 (0) | 2021.11.16 |
| [Node.js] Node.js란? (0) | 2021.11.16 |