Skip to content

Instantly share code, notes, and snippets.

@lukabot
Created April 6, 2016 05:33
Show Gist options
  • Save lukabot/dd7b25c716ef2508936f1b83f3e33199 to your computer and use it in GitHub Desktop.
Save lukabot/dd7b25c716ef2508936f1b83f3e33199 to your computer and use it in GitHub Desktop.
자바스크립트 모듈 패턴
/*
* 파일 이름, 목적, 작성자, 저작권 정보 및 기타 등등 적는곳
*
* 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