프론트엔드-코드/Node.js

exports, require commonJS 문법

sdafdq 2023. 10. 4. 17:24
const printHello = ()=>{
  console.log('Hello');
}

let nums = [1,2,3,4];
const PI = 3.14;

class User{
  name;
  constructor(name){
    this.name = name;
  }
  introduce(){
    console.log(`Hello, my name is ${this.name}`);
  }
}

let user1 = new User('user1');
function hello(msg){
  console.log('export function' + msg);
}

exports.printHello = printHello;
exports.nums = nums;
exports.PI = PI;
exports.User = User;
exports.user1 = user1;
exports.hello = hello;

exports.printMessage = message =>{
  console.log(message);
}

먼저 전달해 줄걸 만든 다음에, (위처럼 배열, 상수, 변수, 클래스, 함수, 익명함수, 객체 등)

exports.외부에서접근할이름 = 전달할것.

const PI = 3.14; 를 전달하고 싶으면

exports.PI = PI;

exports.PI는 꼭 PI는 아니여도 되지만, 보통 이렇게 맞춰주는 듯 하다.

 

이렇게 해 주고

 

다른 js 파일에 

const server = require('./server.js');
 
console.log(server.PI);
new server.User('user2');
server.hello('hello!!')
server.user1.introduce();

이렇게 하면 쓸 수 있음.

const 외부모듈객체이름으로쓸것 = require(경로);

하면 저기 외부모듈객체이름으로쓸것에 저 외부 모듈에서 exports 한 거 다 들어감.

앞서 말 했듯이, server.접근할이름 해서 접근하면 됨.

 

 

불러오는 파일의 required 이거 파일 이름은 제대로 지정해야 하지만, 이름은 내 맘대로 쓸 수 있음.

그런데 보통 맞춰주는게 좋겠지.

 

 

 

module.exports={

}

 

이거는 한번에 모듈로 묶어서 캡슐화해서 exports 한다는 거라고 하는데...

node.js가 이 기술을 사용하기로 채택했다고 한다.