author
postNo
status
thumbnail
description
category
tags
createdAt
updatedAt
Singleton 이란?
싱글톤 패턴이란, 전체 시스템에서 하나의 인스턴스만이 존재하도록 보장하는 객체 생성패턴입니다.
(자세한건 <a href="/posts/45">이 글</a>에서 자세히 다룬다)
Node.js에서 싱글톤 구현
아마도 Node.js 에서 class를 사용하면서 싱글톤을 구현하기 위해 똑같지는 않더라도 비슷한 방식으로 구현했을 것이다.
싱글톤 구현을 위해 위와같은 코드를 사용하고있었다면 당신은 쓸모없는 코드를 작성하고있었을지도 모른다.
다른 언어라면 모르겠지만 최소한 Node.js에서는 싱글톤을 직접 구현할 필요가 없다.
Node.js에서 require는 자동으로 캐시된다.
Node.js는 모듈이 처음 로드된 후 캐시된다. 즉,
require('foo')를 하는순간 require.cache에 저장되고 이는 자동으로 캐시되어 다시 require를 하더라도 같은 객체가 반환된다.즉,
위와같은 결과를 확인할 수 있다. <a href="https://nodejs.org/api/modules.html#modules_caching" target="_blank">(Node.js 공식문서 확인하기)</a>
따라서 싱글톤의 코드를 구현하지 않더라도 알아서 싱글톤으로 동작하고 있었다는 의미이다.
주의사항
이것은
require('foo')가 동일한 파일로 해석되는 경우 동일한 객체가 리턴된다는 것을 의미한다. 그 말은 동일한 파일이 아니라면 다른 객체가 리턴된다.
모듈은 대소문자를 구분하여 node_modules의 위치에 따라 다른 파일이름으로 해석될 수 있으므로 다른 파일로 해석될 가능성이 있다.
즉
require('foo')와 require('FOO') 는 비록 같읕 파일이라 할지라도 파일명이 다르면 다른 객체가 반환된다.참고
- <a href="https://nodejs.org/api/modules.html#modules_caching" taget="_blank">Node.js 공식문서</a>