<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to JsIntro</title><link>https://sourceforge.net/p/xe-core/wiki/JsIntro/</link><description>Recent changes to JsIntro</description><atom:link href="https://sourceforge.net/p/xe-core/wiki/JsIntro/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 25 Mar 2015 11:09:23 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/xe-core/wiki/JsIntro/feed" rel="self" type="application/rss+xml"/><item><title>JsIntro modified by Anonymous</title><link>https://sourceforge.net/p/xe-core/wiki/JsIntro/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="jaf"&gt;JAF란?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;JAF란?&lt;ul&gt;
&lt;li&gt;구조&lt;/li&gt;
&lt;li&gt;장점&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;JAF(JavaScript Application Framework)는 XpressEngine에서 자바스크립트를 작성할 때 사용하는 메시지 기반의 프레임워크이다. &lt;/p&gt;
&lt;p&gt;XpressEngine은 수많은 확장 기능으로 이루어지기 때문에 각 확장 기능에서 추가한 다양한 종류의 자바스크립트 프로그램을 사용한다. 그러나, 이 때 사용된 자바스크립트 프로그램은 대부분 확장을 고려하지 않고 설계되었기 때문에 다른 개발자가 추가 기능을 작성하기 어렵다. 예를 들어, 유효성 검사를 실행할 때 자신 만의 규칙을 추가하고 싶어도 유효성 검사 프로그램에서 제공해주는 방법이 없어 추가 기능 작성은 거의 불가능하다. &lt;/p&gt;
&lt;p&gt;설령 서로 다른 개발자가 작성한 자바스크립트 프로그램이라 해도 확장하기 쉽고 연동하기 편리하다면 더 많은 가능성을 만들어 사용자들에게 더 큰 만족감을 줄 수 있을 것이다. 그리고 바로 이것이 JAF가 필요한 이유이다. &lt;/p&gt;
&lt;h2 id="_1"&gt;구조&lt;/h2&gt;
&lt;p&gt;JAF는 크게 전역 객체 xe, 앱(App), 플러그인(Plugin)으로 구성되어 있다. 전역 객체 xe가 모든 앱을 관리하며 각 앱은 자신만의 플러그인을 포함할 수 있다. 전역 객체 xe는 앱으로서의 특성도 포함하고 있으므로 플러그인을 가질 수도 있다. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://xe-core.googlecode.com/svn/wiki/img/JsFigure1.png" rel="nofollow" /&gt;&lt;/p&gt;
&lt;p&gt;JAF는 전역 객체 xe와 다수의 앱 또는 플러그인으로 구성된다. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;전역 객체 xe&lt;/strong&gt;&lt;br /&gt;
모든 앱을 관리하는 최상위 객체이다. 프로그램 코드에서 &lt;code&gt;window.xe&lt;/code&gt; 또는 &lt;code&gt;xe&lt;/code&gt;로 참조할 수 있다. 또한, &lt;code&gt;xe&lt;/code&gt;는 앱의 특성도 포함하고 있다. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;앱&lt;/strong&gt;&lt;br /&gt;
앱은 &lt;code&gt;독립된 기능을 가진 프로그램&lt;/code&gt;이다. WYSIWYG 편집기, 유효성 검사기 등이 앱의 한 예이다. 앱을 사용하려면 반드시 전역 객체 &lt;code&gt;xe&lt;/code&gt;에 먼저 등록해야 한다. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;플러그인&lt;/strong&gt;&lt;br /&gt;
플러그인은 앱에 추가 기능을 제공하는 프로그램이다. 예를 들어, WYSIWYG 편집기에 이미지 삽입 기능을 추가하거나 색상 변경 기능을 추가할 때 각 기능을 플러그인으로 만들어 추가할 수 있다. 플러그인을 사용하려면 반드시 앱에 등록해야 한다. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="_2"&gt;장점&lt;/h2&gt;
&lt;p&gt;JAF를 사용하면 다음과 같은 장점을 얻을 수 있다. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;고려할 사항이 적다&lt;/strong&gt;&lt;br /&gt;
프로그램을 작성할 때 어떤 프로그램이 설치되었는지 또는 어떤 메서드를 제공하는지 일일이 조사하지 않아도 된다. 메시지만 전달하면 그 뒤는 프레임워크에서 알아서 해결해준다. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;프로그램의 기능을 쉽게 확장할 수 있다.&lt;/strong&gt;&lt;br /&gt;
안내된 작성 방법에 따라 앱 또는 플러그인을 작성하기만 하면 확장성은 저절로 갖추어 진다. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;무한한 확장이 가능하다.&lt;/strong&gt;&lt;br /&gt;
BEFORE, AFTER 훅을 사용하면 프로그램에 무한한 확장이 가능하다. 어떤 API가 있을 때 BEFORE 훅은 API 실행 전에, AFTER 훅은 API 실행 후에 실행되는데 BEFORE 또는 AFTER 훅에도 훅을 추가할 수 있다. 예를 들어, API_EXAMPLE 이라는 API가 있다면 BEFORE_EXAMPLE이 가능한 것은 물론 BEFORE_BEFORE_EXAMPLE, BEFORE_BEFORE_BEFORE_EXAMPLE과 같이 끝없이 확장 가능하다. &lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 25 Mar 2015 11:09:23 -0000</pubDate><guid>https://sourceforge.netcf898e1eb75f260f3b1d1e2fe361cb6c249ee9b0</guid></item></channel></rss>