자바스크립트 모듈 작성 가이드 ---- ## 명명 규칙 * NamingGuide.md 참조 ## 폴더 구조 * __javascripts/lib__ jQuery를 포함한 프레임워크, 라이브러리 파일 * __javascripts/common__ 공통 코드, UI Components. 함수 또는 객체로 작성한다 * __javascripts/service__ 각 페이지에 사용되는 자바스크립트 모듈. 함수로 작성한다 * __javascripts/deprecated__ 사용되지 않는 파일이지만 개발 과정에서 참조하기 위해 임시로 보존하는 코드 ## 코드 구조 * yobi.CodeTemplate.js 참조 > * 초기화 함수는 \_init() 으로 통일하고, 이 함수 내에서 \_initVar, \_initElement, \_attachEvent 를 호출한다. > 각 함수의 순서는 필요에 따라 배치할 수 있고 굳이 해당 함수가 필요치 않는 경우 작성하지 않아도 무방하다. > * 모듈 내에서 사용되는 변수는 htVar의 멤버 변수로 할당하며 초기화 단계에서 수행하는 함수명은 \_initVar() 으로 한다 > * 모듈 내에서 사용되는 HTML Element 변수는 htElement 의 멤버 변수로 할당하며 초기화 단계에서 수행하는 함수명은 \_initElement() 로 한다 > * 특별히 제약이 없는 한 이벤트 핸들러 지정은 \_attachEvent 에서 일괄적으로 수행하도록 구성한다 * UI 컴포넌트 등 공통 코드는 함수, 객체 등 명명 규칙을 준수한다는 전제하에 코드 구조는 자유롭게 구성해도 무방하다 ## $yobi.loadModule 사용법 * 만약 yobi.module.Name 이라는 이름의 모듈을 정의한 경우 아래와 같다 * 첫 번째 인자: yobi. 을 제외한 모듈 이름 * 두 번째 인자: 해당 모듈 초기화 함수에 제공될 옵션 객체(Object) > $yobi.loadModule("module.Name", { > "sOption": "Option Value" > }); * 현재 페이지 내에서 해당 모듈을 찾을 수 없는 경우, 즉 명시적으로 ` > > var sTpl = document.getElementById("tplItem").text; > var htData = {"name": "John Doe", "email":"foo@bar.com"}; > > var welDiv = $.tmpl(sTpl, htData); // returns wrapped element > var sHTML = $yobi.tmpl(sTpl, htData); // returns plain string