01.09.월(Module 이해)

유희선·2023년 1월 8일
0

TIL

목록 보기
21/29

1. 개념
-JS 파일 단위로 분리된 코드
-JS 파일은 특정한 기능을 가진 여러 개의 함수와 변수들의 집합
-그 자체로도 하나의 프로그램이며 다른 프로그램의 부품으로 사용

2. 관련 코드

const express = require("express");
const app = express();
const port = 3000;
const goodRouter = require('./routes/good')

app.get("/", (req, res) => {
  res.send("안녕하세요");
});

//모든 API가 해당 함수를 실행 후 , 진행 = 미들웨어
//'/api' 를 거친 후 good.js를 실행하라는 의미
app.use('/api', goodRouter)

//routes 폴더 안에 있는 다른 폴더를 연결하고 싶을 경우
//변수 설정 후, 배열 사용하면 됨
//app.use('/api', [goodRouter, postRouter)

app.listen(port, () => {
  console.log(port, "서버가 열렸습니다");
});

2. 종류
1) CommonJS (CJS)
-기본으로 사용
-전역 스코프에 정의되어 있는 require 함수 사용
-require 함수) 경로 혹은 문자열을 가지고 내부 알고리즘을 통해 모듈을 가져오고 종속성 처리
2) ECMA Script Module (ESM)
-모든 JS 환경에서 통합적인 인터페이스를 제공하기 위해 시작된 체계
-정적으로 모듈을 가져오며 비동기적 모듈 로딩과 순환 종속 처리


3. module 사용 방법
-export 명령어) 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근 가능
-import,require 명령어) 외부 모듈의 기능을 가져올 수 있음
🧨 import, require 차이점
-import) ES6로 모듈 시스템을 관리할 때 사용
-require) CJS로 모듈 시스템을 관리할 때 사용


4. export 추가 설명
1) 관련 코드

//'exports.add'로 내보내게 되면, 함수 그 자체로 내보내는 것이 아니라 객체로 내보내게 됨
exports.add = function (a,b) {
  return a+b;
}

//기본 파일에서 해당 코드를 출력하기 위해서는 아래와 같이 작성해야 함
const add = require('./(해당폴더)') 
console.log(add.add((a입력값),(b입력값)))

=

const {add} = require('./(해당폴더)')
console.log(add(10,30))

5.module.exportsexports의 차이점
1) 관련 코드

//첫번째 코드
// module.exports 코드
function add(a,b) {return a+b}
module.exports = add;
//두번째 코드
// exports 코드 (1)
exports.add = function (a,b) {return a+b}
//세번째 코드
// exports 코드 (2)
function add (a,b) {
  return a+b;
}

//모듈을 내보낼 때, 객체 형태 자체로 내보낼 수 있음
//모듈을 호출했을 때, add 키 값에는 add 함수가 들어가는 방법
module.exports = {add : add} 
// = {add : [Function {anonymous}]} 
//네번째 코드
//모듈을 호출했을 때, add 키 값에는 add 변수 함수가 가지고 있는 값 할당
const add = (a,b) => {
  return a + b
} 

exports.add = add

2) 추가 설명
(1) module.exports
-add라는 함수 그 자체를 내보낼 수 있음
(2) exports.
-객체형식을 통해서 add라는 객체를 만들어서
add key 값에는 value의 익명함수가 할당되는 방법

0개의 댓글