반응형
1. 모듈(module)
- 연관된 코드들을 하나의 단위로 그룹화하여 관리하기 위한 개발 방법
- Javascript 객체 생성과 방법이 비슷하지만 객체는 내부에서 그대로 쓰는 것이 목적이라면 모듈은 그룹화를 시켜서 외부에서 재사용하는 것이 목적이라는 것에 차이점이 있다.
모듈 생성
// module.exports를 exp 변수에 넣는다.
// 변수에 따로 넣는 이유는 밑에 처럼 새로운 값들을 추가하기 위해서 한다.
// 하지만 상대적으로 한번에 그룹화하는 경우가 많다.
const exp = module.exports = {
add: function(a, b) {
return a + b;
},
sub: (a, b) => a - b
}
exp.mul = function(a, b) {
return a * b;
}
exp.div = (a, b) => a / b
// 모듈로 exports 하겠다.
module.exports = {
add: function(a, b) {
return a + b;
},
sub: (a, b) => a - b,
mul: function(a, b) {
return a * b;
},
div: (a, b) => a / b
}
// 변수로 먼저 선언하고 module.exports = 변수; 로 export 가능하다.
const exp = {
add: function(a, b) {
return a + b;
},
sub: (a, b) => a - b,
mul: function(a, b) {
return a * b;
},
div: (a, b) => a / b
}
module.exports = exp;
외부 사용 및 결과
// exports한 모듈을 import 하겠다.
const Module = require("./src/Day04/module.js");
// const {add, sub, mul, div} = require("./src/module") => 같은 의미
console.log(Module.add(1, 2));
console.log(Module.sub(2, 1));
console.log(Module.mul(3, 4));
console.log(Module.div(10, 2));
2. 내장 모듈
- 노드에서 자주 사용되는 모듈로 미리 만들어져 있는 모듈이다.
- 이와 반대로 우리가 npm을 사용하여 설치하는 모든 것을 외장 모듈이라 한다.
os 모듈과 path 모듈
os 모듈 | |
version | OS의 커널 버전을 가져옴 |
arch() | OS의 CPU 아키텍처 정보를 리턴 |
homedir() | 현재 사용자의 홈 디렉토리 정보를 가져옴 |
hostname() | 컴퓨터의 이름을 보여줌 |
totalmem() | OS의 총 메모리 용량을 바이트 단위로 출력 |
freemem() | OS의 가용 메모리 정보를 바이트 단위의 정수로 반환 |
uptime() | OS의 부팅 이후 흐른시간을 보여줌 |
networkinterfaces() | OS에 할당된 네트워크 인터페이스에 대한 정보를 리턴 |
path 모듈 | |
join() | 여러개의 문자열을 가변인자로 받아서 하나의 완전한 경로로 조합 |
dirname() | 주어진 경로에서 파일 이름을 제외한 디렉토리 경로를 얻어옴 |
basename() | 주어진 경로에서 파일 이름을 얻어옴 |
extname() | 주어진 경로에서 파일의 .을 포함한 확장자를 얻어옴 |
모듈 생성
// 미리 만들어져 있는 os, path 내장 모듈
const os = require("os");
const path = require("path");
const System = {
info: () => {
console.log("os.version ===> " + os.version);
console.log("os.srch() ===> " + os.arch());
console.log("os.homedir() ===> " + os.homedir());
console.log("os.hostname() ===> " + os.hostname());
console.log("os.totalmem() ===> " + os.totalmem());
console.log("os.freemem() ===> " + os.freemem());
console.log("os.uptime() ===> " + os.uptime());
console.log("os.networkInterfaces() ===> ");
console.log(os.networkInterfaces())
},
path: () => {
console.log("path.join() ===> " + path.join("c:/", "programs", "text.txt"));
console.log("path.dirname() ===> " + path.dirname("c:/programs/test.txt"));
console.log("path.basename() ===> " + path.basename("c:/program/test.txt"));
console.log("path.extname() ===> " + path.extname("c:/programs/test.txt"));
}
}
module.exports = System;
외부 사용 및 결과
const System = require("./src/Day04/system.js")
System.info();
System.path();
3. 외장 모듈
- 일반 또는 훌륭한 Node.js(Javascript) 개발자들이 만들어 놓은 모듈
- 외장 모듈을 사용하기 위해서는 npm(Node Package Manager)을 사용
대표적인 외장 모듈
moment | 날짜 관련 라이브러리 중 가장 많이 사용되었던 모듈 |
mysql | mysql 접속 및 쿼리 관련 모듈 |
passport | 회원가입 및 로그인 등 세션과 쿠키 처리 등 인증/인가 관련 모듈 |
day.js | moment 모듈 업데이트 종료로 현재 자주 사용되는 모듈 |
moment 설치 및 자주 사용하는 함수
- 설치 : npm install moment
- import : import moment from "moment" / const moment = require("moment")
moment() | 현재 날짜/시간 또는 날짜를 지정하여 객체를 생성 |
format() | 날짜/시간을 원하는 형태의 문자열로 변경 가능 |
add() | 날짜 및 시간을 더하거나 빼는 연산을 수행 |
diff() | 날짜 및 시간 차이를 구함 |
startOf() | 해당 날짜 기준 시간 단위의 시작 시간을 가져옴 |
endOf() | 해달 날짜 기준 시간 단위의 마지막 시간을 가져옴 |
모듈 생성
const moment = require("moment")
const Moment = {
today: () => {
console.log("today ===> ");
console.log(moment()); // 현재 날짜 및 시간
},
date: () => {
console.log("date ===> ");
console.log(moment("2022-01-27")); // 내가 지정한 날짜
console.log(moment("2022/01/27", "YYYY/MM/DD")); // 뒤에 변수 형식으로 넣었어 알아서 기본으로 해줘 의미
console.log(moment("20220127", "YYYYMMDD")); // 뒤에 변수 형식으로 넣었어 알아서 기본으로 해줘 의미
console.log(moment("2022#01#27", "YYYY#MM#DD")); // 뒤에 변수 형식으로 넣었어 알아서 기본으로 해줘 의미
},
format: () => {
console.log("format ===> ");
const date = moment(); // 오늘 날짜의 시간으로 만들 moment
console.log("년-월-일 ====> " + date.format("YYYY-MM-DD"));
console.log("시:분:초 ====> " + date.format("HH:mm:ss"));
console.log("요일 ====> " + date.format("dddd"));
console.log("년-월-일 요일 ===> " + date.format("YYYY-MM-DD dddd"));
console.log("년-월-일 시:분:초 ===> " + date.format("YYYY-MM-DD HH:mm:ss"));
console.log("년-월-일 요일 시:분:초 ===> " + date.format("YYYY-MM-DD dddd HH:mm:ss"));
console.log("년-월-일 요일 시:분:초.밀리초 ===> " + date.format("YYYY-MM-DD dddd HH:mm:ss.SSS"));
console.log("월-일 ===> " + moment("2022-05-04").format("M/D일"));
},
add: () => {
console.log("add or subtract ===> ");
// 날짜 더하기
console.log(moment("2022-01-27").add(1, "days"));
// 포맷을 같이 이용하자.
const day = moment("2022-10-10 10:10:10").add(1, "years").format("YYYY-MM-DD HH:mm:ss");
console.log("년 더하기 ===> " + day);
console.log("월 더하기 ===> " + moment("2022-10-10 10:10:10").add(1, "months").format("YYYY-MM-DD HH:mm:ss"))
console.log("일 더하기 ===> " + moment("2022-10-10 10:10:10").add(1, "days").format("YYYY-MM-DD HH:mm:ss"))
console.log("시 더하기 ===> " + moment("2022-10-10 10:10:10").add(1, "hours").format("YYYY-MM-DD HH:mm:ss"))
console.log("분 더하기 ===> " + moment("2022-10-10 10:10:10").add(1, "minutes").format("YYYY-MM-DD HH:mm:ss"))
console.log("초 더하기 ===> " + moment("2022-10-10 10:10:10").add(1, "seconds").format("YYYY-MM-DD HH:mm:ss"))
console.log("년 빼기 ===> " + moment("2022-10-10 10:10:10").add(-1, "years").format("YYYY-MM-DD HH:mm:ss"))
console.log("월 빼기 ===> " + moment("2022-10-10 10:10:10").add(-1, "months").format("YYYY-MM-DD HH:mm:ss"))
console.log("일 빼기 ===> " + moment("2022-10-10 10:10:10").add(-1, "days").format("YYYY-MM-DD HH:mm:ss"))
console.log("시 빼기 ===> " + moment("2022-10-10 10:10:10").add(-1, "hours").format("YYYY-MM-DD HH:mm:ss"))
console.log("분 빼기 ===> " + moment("2022-10-10 10:10:10").add(-1, "minutes").format("YYYY-MM-DD HH:mm:ss"))
console.log("초 빼기 ===> " + moment("2022-10-10 10:10:10").add(-1, "seconds").format("YYYY-MM-DD HH:mm:ss"))
console.log("년 빼기 ===> " + moment("2022-10-10 10:10:10").subtract(1, "years").format("YYYY-MM-DD HH:mm:ss"))
},
diff: () => {
// 시간의 차이
console.log("diff ===> ");
console.log("년 차이 ===> " + moment("2022-10-10").diff("2023-11-11", "years"));
// 개월 수로 차이를 구함 그래서 년도는 2년차라도 개월 수가 안되면 1년차로 됨
console.log("년 차이 ===> " + moment("2022-10-10").diff("2020-09-10", "years"));
console.log("월 차이 ===> " + moment("2022-10-10").diff("2023-10-10", "months"));
console.log("월 차이 ===> " + moment("2022-10-10").diff("2020-09-10", "months"));
console.log("일 차이 ===> " + moment("2022-10-10").diff("2023-10-10", "days"));
console.log("일 차이 ===> " + moment("2022-10-10").diff("2020-09-10", "days"));
console.log("시 차이 ===> " + moment("2022-10-10 10:10:10").diff("2023-10-10 10:10:10", "hours"));
console.log("시 차이 ===> " + moment("2022-10-10 10:10:10").diff("2020-09-10 10:10:10" , "hours"));
console.log("분 차이 ===> " + moment("2022-10-10 10:10:10").diff("2023-10-10 10:10:10", "minutes"));
console.log("분 차이 ===> " + moment("2022-10-10 10:10:10").diff("2020-09-10 10:10:10" , "minutes"));
console.log("초 차이 ===> " + moment("2022-10-10 10:10:10").diff("2023-10-10 10:10:10", "seconds"));
console.log("초 차이 ===> " + moment("2022-10-10 10:10:10").diff("2020-09-10 10:10:10" , "seconds"));
}
}
module.exports = Moment;
외부 사용 및 결과
const Moment = require("./src/Day04/moment.js")
Moment.today();
Moment.date();
Moment.format();
Moment.add();
Moment.diff();
반응형
'FrontEnd > Node.js' 카테고리의 다른 글
[Node] Node.js 스프레드 연산자(Spread Operator) (0) | 2022.11.25 |
---|---|
[Node] Node 내장 객체, console, timer 객체 (0) | 2022.11.23 |
[Node] RestAPI, URI 고려사항, 응답 상태 코드 (0) | 2022.11.16 |
[Node] FrontEnd & BackEnd 연동 (0) | 2022.11.16 |
[Node] Node.js 초기 설치, 설정, 용어, 동작 (0) | 2022.11.11 |