Created
April 6, 2016 05:33
-
-
Save lukabot/dd7b25c716ef2508936f1b83f3e33199 to your computer and use it in GitHub Desktop.
자바스크립트 모듈 패턴
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 파일 이름, 목적, 작성자, 저작권 정보 및 기타 등등 적는곳 | |
* | |
* module_template.js | |
* Template for browser feature modules | |
* | |
* Original Author | |
* Michael S. Mikowski - [email protected] | |
* Copyright (c) 2011-2012 Manning Publications Co. | |
*/ | |
/* | |
* IIFE를 사용하여 global namespace를 더럽히지 않는다. | |
* 파일별로 한 개의 네임스페이스만 정의할 수 있으며, 네임스페이스에 맞게 파일 명을 지어야 한다. | |
* 예를들어 모듈에서 spa.module을 네임스페이스로 쓴다면, 파일 명은 spa-module.js가 된다. | |
**********************************************************************************/ | |
spa.module = (function ( /* optional alias parameters */ ) { | |
// optional | |
"use strict"; | |
/* | |
* 모듈 스코프 변수 선언 | |
* named function form을 선호한다 | |
********************************************************************************/ | |
var | |
configMap = { | |
settable_map : { color_name: true }, | |
color_name : 'blue' | |
}, | |
stateMap = { $container : null }, | |
jqueryMap = {}; | |
/* | |
* 유틸리티 메소드 선언 | |
* DOM 조작이 필요없는 private 유틸리티 메소드를 적는다. | |
* 모듈 범위를 벗어나는 유틸리티 메소드는 spa-utils.js 같은 외부 파일에 적는다. | |
********************************************************************************/ | |
// example : getTrimmedString | |
/* | |
* DOM 조작 메소드 선언 | |
* DOM 조작이 필요한 private 메소드를 적는다. | |
********************************************************************************/ | |
function setJqueryMap() { | |
var $container = stateMap.$container; | |
jqueryMap = { $container : $container }; | |
} | |
/* | |
* 이벤트 리스너 선언 | |
* 모든 private 이벤트 리스너를 적는다. | |
********************************************************************************/ | |
/* | |
* 콜백 함수 선언 | |
* 콜백 함수를 적는다. | |
********************************************************************************/ | |
/* | |
* public method 선언 | |
* jsdoc 형태를 사용 | |
********************************************************************************/ | |
/* | |
* Begin public method /configModule/ | |
* @purpose - Adjust configuration of allowed keys | |
* @param {object} input_map - A map of settable keys and values | |
* @returns | |
* @throws | |
********************************************************************************/ | |
function configModule( input_map ) { | |
spa.butil.setConfigMap({ | |
input_map : input_map | |
, settable_map : configMap.settable_map | |
, config_map : configMap | |
}); | |
return true; | |
} | |
// return public methods | |
return { | |
configModule : configModule | |
}; | |
}( /* optional alias paremeters */ )); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment