2024.05.21 - [Node.js] - [Node.js] 노드 설치, npm 패키지 설치
모듈: 기능별로 만들어 놓은 함수
CommonJS 모듈 시스템(CJS) - require
ES 모듈 시스템(ESM) - import
'모듈'을 사용하기 위해 파일을 나누어 보자.
user.js 파일을 생성하여 이름을 할당하는 코드를 작성하고, hello.js 파일을 만들어 인사말을 표시하는 함수를 작성한다.


그런다음 모듈을 내보내기 위해서 module.exports 문을 통해 user, hello 변수를 내보낸다.
app-1.js 파일을 생성하여 두 모듈을 가지고 오는 require 함수를 사용해준다.
(이때 모듈 파일의 경로는 상대 경로로 지정해야 한다)

user를 넣어 hello 함수를 작동시키면 user에서 작성한 이름이 hello 함수에 적용되어 출력이 되는 것을 볼 수 있다.
이제 둘 이상의 변수를 객체로 받아보자.
자바스크립트 객체: 여러 자료 유형을 하나로 묶어 놓은 것.
{중괄호} 안에 키와 값의 형태로 정보가 담기고, 쌍이 여러 개일 경우 쉼표(,)로 구분하는데, 이 형태의 쌍을 '프로퍼티'라고 한다.

users-3.js 파일을 익스포트 해주고,

app-4.js 파일에서 임포트 해준다.
users 객체에 어떤 내용이 들어 있는지 보기 위해 console.log로 users 객체를 찍어보았더니, 중괄호에 키와 값의 형태로 담겨 있는 것을 확인할 수 있었고, 그 중 하나에 접근하기 위해서는 객체의 키에 접근을 하면 되니, hello 함수를 실행할 때, users.user3을 넣고 실행을 하면 해당 값이 잘 적용된 것을 볼 수 있다.
[노드의 코어 모듈]
코어 모듈: 이미 내장되어 있는 모듈
자세하게 살펴보려면 노드 공식 웹 사이트의 [Docs]를 클릭한 후 설치한 노드 버전을 선택하여 모듈 목록을 확인할 수 있단다.
자주 사용하는 모듈과 용도.
fs(파일 시스템) - 파일이나 폴더에 접근할 수 있는 기능을 제공.
http(HTTP) - HTTP 서버를 만들고 요청을 처리하는 기능을 제공.
path(경로) - 파일 경로와 관련된 작업을 하는 기능을 제공.
streams(스트림) - 데이터 스트림을 처리하는 기능을 제공.
crypto(암호화) - 암호화와 과련된 기능을 제공.
os(운영체제) - 운영체제와 상호 작용하는 기능을 제공.
util(유틸리티) - 다양한 유틸리티 함수를 제공.
events(이벤트) - 이벤트 기반 프로그래밍을 지원하는 기능을 제공.
const fs = require("node:fs");
글로벌 모듈: require 함수 없이 사용할 수 있는 모듈
글로벌 객체: 글로벌 모듈에 있는 객체
global.console.log(`${name} 님, 안녕하세요?`);
console.log(`${name} 님, 안녕하세요?`);
너무 당연하게 사용하고 있던 console.log가 글로벌 객체라는 것을 알게 된 순간.

__dirname: 현재 모듈이 있는 폴더 이름을 절대경로로 가져옴.
__filename: 현재 모듈이 있는 파일 이름을 절대경로로 가져옴.
타이머함수
setTimeout: 지정한 시간이 지난 후에 함수 안의 내용을 실행.
setInterval: 지정한 시간마다 함수 안의 내용을 실행.
clearInterval: setInterval 함수로 반복 실행하던 것을 멈춤.
이 책은 주로 CJS 모듈 시스템을 사용하지만 ES 모듈 시스템 사용법도 정리가 되어 있어서 보는데, 형태가 리액트와 아주 비슷하고 별칭을 사용하는 것을 보면 SQL 쿼리가 생각 나기도 한다.
마지막 한 걸음 더!
구조 분해 할당
구조 분해 할당은 주로 '디스트럭팅'이라는 기능이다. 배열이나 객체는 하나의 변수에 다양한 값이 들어 있는데, 여러 값을 한꺼번에 분해해서 변수로 할당할 수 있다.
count fruits = ["사과", "복숭아"]
let [apple, peach] = fruits
const member = {
name: "Kim",
age: 25
}
let {name, age} = member
'Node.js' 카테고리의 다른 글
[Do it_Node.js] 요청 객체와 응답 객체, 라우팅 (0) | 2024.06.07 |
---|---|
[Do it_Node.js] HTTP 모듈 이해하고 서버 만들기 (0) | 2024.06.03 |
[Do it_Node.js] 자바스크립트 동기/비동기_콜백함수, 프라미스, async/await (0) | 2024.05.30 |
[Do it_Node.js] 노드 설치, npm 패키지 설치 (0) | 2024.05.21 |