JS파일을 다른곳에 전달하기(code, class, function ......)
js파일에 있는 class, function을 다른곳에서도 사용할수 있는 module.exports를 사용하도록 하겠습니다. (위 예제들을 실행하기전 node, npm 모듈이 설치되 있어야 합니다.)
class Person{ // Person Class
위 코드는 person.js파일로 간단한 class입니다. Person을 class로 선언하면 name, age를 입력하고 meghod greeting()를 이용하여 간단한 콘솔로그 문장을 출력합니다.
이때 class Person을 다른 코드에서도 사용하고 싶다면 'module.exports'를 사용합니다. 당연히 출력하는 것은 class Person입니다.
이제 새로운 파일을 만듭니다. index.js파일을 만들어 위와 같이 코드를 작성합니다. 처음 만들었던 person.js을 입수하기 위해 require를 사용합니다. 이때 경로가 중요한데 './'는 같은경로를 의미합니다.
위 사진을 보면 index.js와 person.js가 NODEJS_EX2폴더에 갖이 들어있는 것을 알수 있습니다. 즉 같은 경로에 있습니다. 그래서 './person'을 경로로 합니다.
('require'는 commonjs이라고 말함)
const personA = new Person('Alex', '27');
이제 새로운 class를 선언합니다. personA를 선언하고 이름과 나이를 각각 Alex, 27이라고 합니다.
마지막으로 Person에 존재하는 greeting method를 실행합니다.
이제 콘솔창에 node index or index.js를 치시고 실행하면 'Hello. My name is Alex and my age is 27'이라는 console.log를 볼수 있습니다.
하지만 1개의 js파일에 여러개의 class 또는 function을 다른 코드에서도 사용하고 싶을시는 다른 방법을 사용해야 합니다.
위 코드는 처음 person.js에서 function 추가 및 module.exports가 객체(object)로 출력이 된다는 것이 다른 점입니다.
function은 단순히 2개의 number를 받아서 더한다음 return을 합니다.
그리고 처음에 그냥 class Person을 출력한 것과 달리 이번에는 객체로 변형하여 class, function을 갖이 출력을 합니다.
index.js파일또한 변경사항이 있는데 처음 class을 선언할때 Person만 사용했습니다. 하지만 이제는 Object로 Person이 받기 때문에 class선언 또한 key값을 이용하여 선언해야 합니다. 그래서 personA의 class를 선언할때 Person.Person(또는 Person['Person'])으로 선언하는 것입니다.
add의 함수를 선언하는 것도 같은 이유 입니다. 이렇게 저장을 하고 node에서 index파일을 실행 할 시 아래 사진과 같이 출력이 됩니다.
이렇듯 module.exports는 여러개의 js파일을 하나로 불러올수 있게 도와줍니다. 하나의 js파일에 모든 class, function이 다 들어있다면 코드는 상당히 길고 지저분할 것입니다. 따라서 여러개의 파일에 코드를 작성하고 불러오는 것이 코딩하는데 더 수월할 것입니다.
실제로 'module'이 무엇인지를 간단하게 알아보겠습니다.
간단하게 console.log(module)를 하고 결과를 확인합니다.
'Module'는 객체로 되어있는것을 알수 있습니다. 키값을 확인할때 exports명칭의 키를 확인할수 있는데 이곳이 실제로 다른 js파일로 보내기 위한 키입니다. 이제 exports의 value값을 확인하면 객체라는 것을 확인할수 있습니다.
즉 위 예제들처럼 module.exports를 사용하면 객체로 저장이되고 다른곳에서 사용할때도 객체로 빼서 사용한다는 것을 알수 있습니다.
댓글
댓글 쓰기