10장 모듈과 네임스페이스

2015. 3. 31. 12:59 나홀로스터디/JS 완벽가이드


10장 모듈과 네임스페이스

이 포스팅은 "자바스크립트 완벽 가이드(인사이트, 송인철,이동기,이유원,황인석 옮김)"에서 발췌 요약한 것입니다.
 

10.1 모듈과 네임스페이스 생성
10.2 네임스페이스에서 심벌 가져오기
10.3 모듈 유틸리티


오늘날 자바스크립트로 작성된 많은 스크립트는 외부 모듈이나 자바스크립트 코드 라이브러리에 의존한다. 자바스크립트는 언어 자체적으로 모듈을 생성하거나 관리하기 위한 기법을 제공하지 않기 때문에 이식할 수 았으며 재사용할수 있는 자바스크립트 코드를 작성하는 것은 이 장에서 설명할 몇 가지 기본적인 관습과 관련된 문제다. 


가장 중요한 관습은 두 모듈이 같은 이름을 가진 전역 프로퍼티를 정의했을 때 발생할 수 있는 이름 충돌을 피하기 위해서 네임스페이스를 사용하는 것이다. 다른 관습은 모듈 초기화 코드를 사용하는 것인데 웹 브라우저의 문서를 조작하는 모듈은 문서가 완전히 로딩된 후에야 실행되는 코드를 필요로 하기 때문에 중요하다.



10.1 모듈과 네임스페이스 생성

전역 변수를 정의하면 여러분이 작성한 모듈을 사용하는 프로그래머 혹은 다른 모듈이 그 변수를 엎어쓸 위험이 항상 존재한다. 이에 대한 해결책은 모듈에서 사용할 모든 메서드와 프로퍼티를, 그 모듈을 위해 특별히 생성한 네임스페이스 안에 정의하는 것이다. 



10.2 네임스페이스에서 심벌 가져오기

고유한 네임스페이스의 문제점은 함수의 이름을 너무 길게 만든다는 것이다.

그 대안으로는 전역 네임스페이스를 사용하지 않고 입력하기 쉬운 네임스페이스로 심벌을 가져오는 방법이 있는데 중요한 점이 몇가지 있다.


첫째, 함수나 객체 또는 배열을 참조하는 심벌들만 가져올 수 있다. 만약 값이 숫자나 문자열 같은 기본 타입인 심벌을 가져온다면 단순히 그 값의 정적인 사본을 얻는다. 값에 대한 변화는 네임스페이스 안에서만 발생하며 가져온 사본에는 반영되지 않는다. 


둘째, 가져오기가 모듈 사용자를 위한 것임을 이해하여 항상 완벽한 전체 심벌 이름을 사용해야 한다. 



10.3 모듈 유틸리티

Module.require() 함수는 주어진 버전과 이름을 가진 모듈이 존재하는지 검사하고 만약 존재하지 않는다면 에러를 발생시킨다. 

Module.importSymbols() 함수는 심벌을 전역 네임스페이스 혹은 주어진 다른 네임스페이스로 가져오는 작업을 간소화한다.





'나홀로스터디 > JS 완벽가이드' 카테고리의 다른 글

쿠키와 클라이언트 측 지속성  (0) 2014.12.23
CSS와 DHTML  (0) 2014.12.15
문서 스크립팅  (0) 2014.11.26
웹 브라우저와 자바스크립트  (0) 2014.11.18
함수  (0) 2014.10.27
Copyright © HuckleberryM All Rights Reserved | JB All In One Designed by CMSFactory.NET