4. JavaScript App Framework

조회 수 699 추천 수 0 2010.01.25 16:52:48
행복한고니 *.13.36.215
제목 작성자 날짜
4. JavaScript App Framework (current) 행복한고니 2010.01.25 16:52:48
복원
<h3 id="h1256796562879">소개</h3><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">메시지 전달 : cast</a></li><li class="toc4"><a href="#h1262157995711">전역 메시지 전달 : broadcast</a></li><li class="toc4"><a href="#undefined">API</a></li></ul><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 <b>앱(App)</b>과 <b>플러그인(Plugin)</b>의 두 가지로 구분할 수 있습니다. <b>플러그인</b>은 반드시 <b>앱</b>에 등록이 되어야 하며, 모든 <b>앱</b>은 <b>xe 전역 객체</b>에 등록되어야 합니다(소문자 xe에 주의하세요). 또한, <b>xe</b>는 <b>앱</b>의 특성도 가지고 있습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><p><b>앱</b>과 <b>플러그인</b>을 구분짓는 특징 중 하나는 플러그인을 자식으로 등록할 수 있는지 여부입니다. <b>앱</b>은 플러그인을 자식으로 등록할 수 있지만, <b>플러그인</b>은 항상 가장 하위에 존재합니다.</p><h3 id="h1262157799646">메시징</h3><p><b>JAF</b>에서 메시지를 전달하는 방법은 <b>cast</b>와 <b>broadcast</b>가 있습니다. <b>cast</b>는 하나의 앱 내에서만 전달되는 반면 값을 반환할 수 있으며, <b>broadcast</b>는 모든 앱과 모든 플러그인에 전달되지만, 값을 반환하지 않습니다. 일반적으로 사용하는 메시지는 <b>cast</b>를 통해서 전달하는 것이 좋으며 <b>broadcast</b>는 전역 이벤트(스크롤, DOMReady 등)에만 사용하는 편이 좋습니다.</p><h4 id="h1262157835089">메시지 전달 : cast</h4><p>cast 메소드를 플러그인에서 실행하면,<br>1. 메시지가 상위 앱으로 전달되고,<br>2. 앱에서는 메시지에 해당하는 API가 있는 자식 플러그인을 찾아서,<br>3. 자식 플러그인에 메시지를 전달합니다.</p><p>다음 이미지는 위 과정을 그림으로 나타낸 것입니다. 이해를 돕기 위해 PRINT 메시지를 전달한다고 가정했습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf2_5.png" width="547" height="286" class="xe_filesrl_18642707"><br>그림 2) 플러그인4 에서 PRINT 메시지를 cast (인수는 "hello" 문자열)</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf3_1.png" width="550" height="287" class="xe_filesrl_18642708"><br>그림 3) 메시지를 상위 앱에 전달</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf4.png" width="550" height="380" class="xe_filesrl_18642709"><br>그림 4) 상위 앱에서 메시지에 대한 API가 존재하는 플러그인에 메시지 전달</p><p><b>그림 2</b>에서 <b>Plugin4</b>는 <i>PRINT</i> 라는 메시지를 <b>cast</b> 했습니다. 이 메시지는 바로 <b>Plugin4</b>의 상위 앱인 <b>APP3</b>에 전달되고, <b>APP3</b>는 자식 플러그인 중 <i>PRINT</i> 메시지에 해당하는 API를 가지고 있는 플러그인에 이 메시지를 전달합니다. 이 때, <b>그림 4</b>에서 보듯이 앱은 자기 자신에게 API가 있는지 먼저 탐색하고(1번), 그 다음에는 해당 메시지에 대한 API를 가진 플러그인에 등록 순서대로 메시지를 전달합니다(2번 → 3번).</p><h4 id="h1262157995711">전역 메시지 전달 : broadcast</h4><p><b>broadcast</b>는 <b>cast</b> 메소드와는 달리 모든 App과 모든 플러그인에 메시지를 전달합니다. 예를 들어, <b>Plugin1</b>에서 <b>boardcast</b> 메소드를 호출하면, <b>xe</b>는 물론, <b>App1</b> ~ <b>App3</b>, <b>Plugin1</b> ~ <b>Plugin5</b> 까지 모두 메시지를 전달받습니다.당연히 <b>cast</b>에 비해 실행 시간이 길어지므로, 꼭 필요한 경우에만 사용해야 합니다.</p><h4 id="undefined">API</h4>
행복한고니 2010.01.25 16:46:26
복원
<h3 id="h1256796562879">소개</h3><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li><li class="toc3"><a href="#undefined">API</a></li></ul><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 <b>앱(App)</b>과 <b>플러그인(Plugin)</b>의 두 가지로 구분할 수 있습니다. <b>플러그인</b>은 반드시 <b>앱</b>에 등록이 되어야 하며, 모든 <b>앱</b>은 <b>xe 전역 객체</b>에 등록되어야 합니다(소문자 xe에 주의하세요). 또한, <b>xe</b>는 <b>앱</b>의 특성도 가지고 있습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><p><b>앱</b>과 <b>플러그인</b>을 구분짓는 특징 중 하나는 플러그인을 자식으로 등록할 수 있는지 여부입니다. <b>앱</b>은 플러그인을 자식으로 등록할 수 있지만, <b>플러그인</b>은 항상 가장 하위에 존재합니다.</p><h3 id="h1262157799646">메시징</h3><p><b>JAF</b>에서 메시지를 전달하는 방법은 <b>cast</b>와 <b>broadcast</b>가 있습니다. <b>cast</b>는 하나의 앱 내에서만 전달되는 반면 값을 반환할 수 있으며, <b>broadcast</b>는 모든 앱과 모든 플러그인에 전달되지만, 값을 반환하지 않습니다. 일반적으로 사용하는 메시지는 <b>cast</b>를 통해서 전달하는 것이 좋으며 <b>broadcast</b>는 전역 이벤트(스크롤, DOMReady 등)에만 사용하는 편이 좋습니다.</p><h4 id="h1262157835089">cast</h4><p>cast 메소드를 플러그인에서 실행하면,<br>1. 메시지가 상위 앱으로 전달되고,<br>2. 앱에서는 메시지에 해당하는 API가 있는 자식 플러그인을 찾아서,<br>3. 자식 플러그인에 메시지를 전달합니다.</p><p>다음 이미지는 위 과정을 그림으로 나타낸 것입니다. 이해를 돕기 위해 PRINT 메시지를 전달한다고 가정했습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf2_5.png" width="547" height="286" class="xe_filesrl_18642707"><br>그림 2) 플러그인4 에서 PRINT 메시지를 cast (인수는 "hello" 문자열)</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf3_1.png" width="550" height="287" class="xe_filesrl_18642708"><br>그림 3) 메시지를 상위 앱에 전달</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf4.png" width="550" height="380" class="xe_filesrl_18642709"><br>그림 4) 상위 앱에서 메시지에 대한 API가 존재하는 플러그인에 메시지 전달</p><p><b>그림 2</b>에서 <b>Plugin4</b>는 <i>PRINT</i> 라는 메시지를 <b>cast</b> 했습니다. 이 메시지는 바로 <b>Plugin4</b>의 상위 앱인 <b>APP3</b>에 전달되고, <b>APP3</b>는 자식 플러그인 중 <i>PRINT</i> 메시지에 해당하는 API를 가지고 있는 플러그인에 이 메시지를 전달합니다. 이 때, <b>그림 4</b>에서 보듯이 앱은 자기 자신에게 API가 있는지 먼저 탐색하고(1번), 그 다음에는 해당 메시지에 대한 API를 가진 플러그인에 등록 순서대로 메시지를 전달합니다(2번 → 3번).</p><h4 id="h1262157995711">broadcast</h4><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p><h3 id="undefined">API</h3>
행복한고니 2010.01.25 16:44:00
복원
<h3 id="h1256796562879">소개</h3><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li><li class="toc3"><a href="#undefined">API</a></li></ul><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 <b>앱(App)</b>과 <b>플러그인(Plugin)</b>의 두 가지로 구분할 수 있습니다. <b>플러그인</b>은 반드시 <b>앱</b>에 등록이 되어야 하며, 모든 <b>앱</b>은 <b>xe 전역 객체</b>에 등록되어야 합니다(소문자 xe에 주의하세요). 또한, <b>xe</b>는 <b>앱</b>의 특성도 가지고 있습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><p><b>앱</b>과 <b>플러그인</b>을 구분짓는 특징 중 하나는 플러그인을 자식으로 등록할 수 있는지 여부입니다. <b>앱</b>은 플러그인을 자식으로 등록할 수 있지만, <b>플러그인</b>은 항상 가장 하위에 존재합니다.</p><h3 id="h1262157799646">메시징</h3><p><b>JAF</b>에서 메시지를 전달하는 방법은 <b>cast</b>와 <b>broadcast</b>가 있습니다. <b>cast</b>는 하나의 앱 내에서만 전달되는 반면 값을 반환할 수 있으며, <b>broadcast</b>는 모든 앱과 모든 플러그인에 전달되지만, 값을 반환하지 않습니다. 일반적으로 사용하는 메시지는 <b>cast</b>를 통해서 전달하는 것이 좋으며 <b>broadcast</b>는 전역 이벤트(스크롤, DOMReady 등)에만 사용하는 편이 좋습니다.</p><h4 id="h1262157835089">cast</h4><p>cast 메소드를 플러그인에서 실행하면,<br>1. 메시지가 상위 앱으로 전달되고,<br>2. 앱에서는 메시지에 해당하는 API가 있는 자식 플러그인을 찾아서,<br>3. 자식 플러그인에 메시지를 전달합니다.</p><p>다음 이미지는 위 과정을 그림으로 나타낸 것입니다. 이해를 돕기 위해 PRINT 메시지를 전달한다고 가정했습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf2_5.png" width="547" height="286" class="xe_filesrl_18642707"><br>그림 2) 플러그인4 에서 PRINT 메시지를 cast (인수는 "hello" 문자열)</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf3_1.png" width="550" height="287" class="xe_filesrl_18642708"><br>그림 3) 메시지를 상위 앱에 전달</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf4.png" width="550" height="380" class="xe_filesrl_18642709"><br>그림 4) 상위 앱에서 메시지에 대한 API가 존재하는 플러그인에 메시지 전달</p><h5 id="h1262160587423">메시지 전달 과정</h5><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p><h4 id="h1262157995711">broadcast</h4><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p><h3 id="undefined">API</h3>
행복한고니 2010.01.25 16:37:18
복원
<h3 id="h1256796562879">소개</h3><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li><li class="toc3"><a href="#undefined">API</a></li></ul><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 <b>앱(App)</b>과 <b>플러그인(Plugin)</b>의 두 가지로 구분할 수 있습니다. <b>플러그인</b>은 반드시 <b>앱</b>에 등록이 되어야 하며, 모든 <b>앱</b>은 <b>xe 전역 객체</b>에 등록되어야 합니다(소문자 xe에 주의하세요). 또한, <b>xe</b>는 <b>앱</b>의 특성도 가지고 있습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><p><b>앱</b>과 <b>플러그인</b>을 구분짓는 특징 중 하나는 플러그인을 자식으로 등록할 수 있는지 여부입니다. <b>앱</b>은 플러그인을 자식으로 등록할 수 있지만, <b>플러그인</b>은 항상 가장 하위에 존재합니다.</p><h3 id="h1262157799646">메시징</h3><p><b>JAF</b>에서 메시지를 전달하는 방법은 <b>cast</b>와 <b>broadcast</b>가 있습니다. <b>cast</b>는 하나의 앱 내에서만 전달되는 반면 값을 반환할 수 있으며, <b>broadcast</b>는 모든 앱과 모든 플러그인에 전달되지만, 값을 반환하지 않습니다. 일반적으로 사용하는 메시지는 <b>cast</b>를 통해서 전달하는 것이 좋으며 <b>broadcast</b>는 전역 이벤트(스크롤, DOMReady 등)에만 사용하는 편이 좋습니다.</p><h4 id="h1262157835089">cast</h4><blockquote class="citation"><p>var result = xe.getApp('validator')[0].cast('VALIDATE', [form_object]);</p></blockquote><h5 id="h1262160587423">메시지 전달 과정</h5><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p><h4 id="h1262157995711">broadcast</h4><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p><h3 id="undefined">API</h3>
행복한고니 2010.01.25 16:24:59
복원
<h3 id="h1256796562879">소개</h3><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li><li class="toc3"><a href="#undefined">API</a></li></ul><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 <b>앱(App)</b>과 <b>플러그인(Plugin)</b>의 두 가지로 구분할 수 있습니다. <b>플러그인</b>은 반드시 <b>앱</b>에 등록이 되어야 하며, 모든 <b>앱</b>은 <b>xe 전역 객체</b>에 등록되어야 합니다(소문자 xe에 주의하세요). 또한, <b>xe</b>는 <b>앱</b>의 특성도 가지고 있습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><p><b>앱</b>과 <b>플러그인</b>을 구분짓는 특징 중 하나는 플러그인을 자식으로 등록할 수 있는지 여부입니다. <b>앱</b>은 플러그인을 자식으로 등록할 수 있지만, <b>플러그인</b>은 항상 가장 하위에 존재합니다.</p><h3 id="h1262157799646">메시징</h3><p>JAF에서 메시지를 전달하는 방법은 cast와 broadcast 가 있습니다.</p><h4 id="h1262157835089">cast</h4><blockquote class="citation"><p>var result = xe.getApp('validator')[0].cast('VALIDATE', [form_object]);</p></blockquote><h5 id="h1262160587423">메시지 전달 과정</h5><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p><h4 id="h1262157995711">broadcast</h4><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p><h3 id="undefined">API</h3>
행복한고니 2010.01.25 15:11:45
복원
<h3 id="h1256796562879">소개</h3><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li><li class="toc3"><a href="#undefined">API</a></li></ul><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 <b>앱(App)</b>과 <b>플러그인(Plugin)</b>의 두 가지로 구분할 수 있습니다. <b>플러그인</b>은 반드시 <b>앱</b>에 등록이 되어야 하며, 모든 <b>앱</b>은 <b>xe 전역 객체</b>에 등록되어야 합니다(소문자 xe에 주의하세요). 또한, <b>xe</b>는 <b>앱</b>의 특성도 가지고 있습니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><p><b>앱</b>과 <b>플러그인</b>을 구분짓는 특징 중 하나는 플러그인을 자식으로 등록할 수 있는지 여부입니다. <b>앱</b>은 플러그인을 자식으로 등록할 수 있지만, <b>플러그인</b>은 항상 가장 하위에 존재합니다.</p><h3 id="h1262157799646">메시징</h3><p>JAF에서 메시지를 전달하는 방법은 cast와 broadcast 가 있습니다.</p><h4 id="h1262157835089">cast</h4><blockquote class="citation"><p>var result = xe.getApp('validator')[0].cast('VALIDATE', [form_object]);</p></blockquote><h5 id="h1262160587423">메시지 전달 과정</h5><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p><p class="img">
<img alt="" class="xe_file_srl_18577132" src="./files/attach/images/18093223/792/405/018/jaf3.png">
</p><p class="img">
<img alt="" class="xe_file_srl_18577113" src="./files/attach/images/18093223/792/405/018/jaf2.png">
</p><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p><h4 id="h1262157995711">broadcast</h4><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p><h3 id="undefined">API</h3>
행복한고니 2010.01.22 17:07:32
복원
<ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li></ul><h3 id="h1256796562879">소개</h3><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 앱(App)과 플러그인(Plugin)의 두 가지로 구분할 수 있습니다. 플러그인은 반드시 앱에 등록이 되어야 하며, 모든 앱은 최상위 앱이자 전역 객체인 xe에 등록되어야 합니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><h3 id="h1262157799646">메시징</h3><p>JAF에서 메시지를 전달하는 방법은 cast와 broadcast 가 있습니다.</p><h4 id="h1262157835089">cast</h4><blockquote class="citation"><p>var result = xe.getApp('validator')[0].cast('VALIDATE', [form_object]);</p></blockquote><h5 id="h1262160587423">메시지 전달 과정</h5><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p><p class="img">
<img alt="" class="xe_file_srl_18577132" src="./files/attach/images/18093223/792/405/018/jaf3.png">
</p><p class="img">
<img alt="" class="xe_file_srl_18577113" src="./files/attach/images/18093223/792/405/018/jaf2.png">
</p><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p><h4 id="h1262157995711">broadcast</h4><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p>
행복한고니 2010.01.22 16:14:20
복원
<ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li></ul><h3 id="h1256796562879">소개</h3><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p><h3 id="h1262156026227">구조</h3><p>JAF를 사용한 코드는 크게 앱(App)과 플러그인(Plugin)의 두 가지로 구분할 수 있습니다. 플러그인은 반드시 앱에 등록이 되어야 하며, 모든 앱은 최상위 앱이자 전역 객체인 xe에 등록되어야 합니다.</p><p class="img" style="text-align: center; "><img src="./files/attach/images/18093223/792/405/018/jaf1_3.png" width="554" height="291" class="xe_filesrl_18635193"><br>그림 1) JavaScript App Framework의 구조</p><h3 id="h1262157799646">메시징</h3><p>JAF에서 메시지를 전달하는 방법은 cast와 broadcast 가 있습니다.</p><h4 id="h1262157835089">cast</h4><blockquote class="citation"><p>var result = xe.getApp('validator')[0].cast('VALIDATE', [form_object]);</p></blockquote><h5 id="h1262160587423">메시지 전달 과정</h5><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p><p class="img">
<img alt="" class="xe_file_srl_18577132" src="./files/attach/images/18093223/792/405/018/jaf3.png">
</p><p class="img">
<img alt="" class="xe_file_srl_18577113" src="./files/attach/images/18093223/792/405/018/jaf2.png">
</p><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p><h4 id="h1262157995711">broadcast</h4><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p>
행복한고니 2010.01.22 16:14:06
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1256796562879">소개</h3></div><div class="eArea xe_content xe_dr_txt"><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1262156026227">구조</h3></div><div class="eArea xe_content xe_dr_txt"><p>JAF를 사용한 코드는 크게 앱(App)과 플러그인(Plugin)의 두 가지로 구분할 수 있습니다. 플러그인은 반드시 앱에 등록이 되어야 하며, 모든 앱은 최상위 앱이자 전역 객체인 xe에 등록되어야 합니다.</p></div><div class="eArea xe_content xe_dr_img"><p>
<img alt="" class="" src="./files/attach/images/18093223/792/405/018/jaf1_2.png">
</p><p class="desc">그림 1) JavaScript App Framework의 구조</p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1262157799646">메시징</h3></div><div class="eArea xe_content xe_dr_txt"><p>JAF에서 메시지를 전달하는 방법은 cast와 broadcast 가 있습니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1262157835089">cast</h4></div><div class="eArea xe_content xe_dr_txt"><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p></div><div class="eArea xe_content xe_dr_blockquote"><blockquote><p>var result = xe.getApp('validator')[0].cast('VALIDATE', [form_object]);</p></blockquote></div><div class="eArea xe_content xe_dr_hx"><h5 id="h1262160587423">메시지 전달 과정</h5></div><div class="eArea xe_content xe_dr_txt"><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p></div><div class="eArea xe_content xe_dr_img"><p>
<img alt="" class="xe_file_srl_18577113" src="./files/attach/images/18093223/792/405/018/jaf2.png">
</p></div><div class="eArea xe_content xe_dr_img"><p>
<img alt="" class="xe_file_srl_18577132" src="./files/attach/images/18093223/792/405/018/jaf3.png">
</p></div><div class="eArea xe_content xe_dr_txt"><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1262157995711">broadcast</h4></div><div class="eArea xe_content xe_dr_txt"><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p></div>
행복한고니 2009.12.30 17:21:26
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1256796562879">소개</a></li><li class="toc3"><a href="#h1262156026227">구조</a></li><li class="toc3"><a href="#h1262157799646">메시징</a></li><li class="toc4"><a href="#h1262160505175">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157835089">cast</a></li><li class="toc5"><a href="#h1262160587423">메시지 전달 과정</a></li><li class="toc4"><a href="#h1262157995711">broadcast</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1256796562879">소개</h3></div><div class="eArea xe_content xe_dr_txt"><p>Javascript App Framework(이하 JAF)은&nbsp;<span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma, sans-serif; ">XE에서 사용되는 자바스크립트 코드를 보다 효율적이고 구조적으로 만들기 위한 메시징 기반의 프레임워크입니다.</span></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1262156026227">구조</h3></div><div class="eArea xe_content xe_dr_txt"><p>JAF를 사용한 코드는 크게 앱(App)과 플러그인(Plugin)의 두 가지로 구분할 수 있습니다. 플러그인은 반드시 앱에 등록이 되어야 하며, 모든 앱은 최상위 앱이자 전역 객체인 xe에 등록되어야 합니다.</p></div><div class="eArea xe_content xe_dr_img"><p>
<img alt="" class="" src="./files/attach/images/18093223/792/405/018/jaf1_2.png">
</p><p class="desc">그림 1) JavaScript App Framework의 구조</p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1262157799646">메시징</h3></div><div class="eArea xe_content xe_dr_txt"><p>JAF에서 메시지를 전달하는 방법은 cast와 broadcast 가 있습니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1262160505175">메시지 전달 과정</h4></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1262157835089">cast</h4></div><div class="eArea xe_content xe_dr_txt"><p>cast는 플러그인이 등록된 앱 안에서만 메시지를 주고 받습니다. 예를 들어, 위 그림1 에서 &nbsp;Plugin3 이 cast 메소드를 호출했다면, 이 메시지는 App3, Plugin3, Plugin4, Plugin5 에만 전달됩니다.</p><p>cast 메소드를 사용하면 메시지 실행 결과를 반환받을 수도 있습니다. 예를 들어, validator 앱에서 유효성 검사를 수행하고 검증 결과를 반환받으려면 다음과 같이 사용합니다.</p></div><div class="eArea xe_content xe_dr_blockquote"><blockquote><p>var result = xe.getApp('validator')[0].cast('VALIDATE', [form_object]);</p></blockquote></div><div class="eArea xe_content xe_dr_hx"><h5 id="h1262160587423">메시지 전달 과정</h5></div><div class="eArea xe_content xe_dr_txt"><p>cast를 호출하면 이 메시지는 플러그인이 속한 상위 App에 전달됩니다.</p></div><div class="eArea xe_content xe_dr_img"><p>
<img alt="" class="xe_file_srl_18577113" src="./files/attach/images/18093223/792/405/018/jaf2.png">
</p></div><div class="eArea xe_content xe_dr_img"><p>
<img alt="" class="xe_file_srl_18577132" src="./files/attach/images/18093223/792/405/018/jaf3.png">
</p></div><div class="eArea xe_content xe_dr_txt"><p>메시지를 전달받은 App은 다시 하위 객체들에 이 메시지를 전달합니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1262157995711">broadcast</h4></div><div class="eArea xe_content xe_dr_txt"><p>broadcast는 cast 메소드와는 달리 모든 App과 모든 플러그인에 cast 메시지를 전달합니다. 예를 들어, Plugin1에서 boardcast 메소드를 호출하면, xe는 물론, App1 ~ App3, Plugin1 ~ Plugin5 까지 모두 메시지를 전달받습니다.당연히 cast에 비해 비용이 비싼 메소드이므로, 꼭 필요한 경우에만 사용해야 합니다.</p></div>
행복한고니 2009.12.30 17:20:46