1. Dojo는 DHTML를 개발하기위해 사용하는 JavaScript 툴로써 이벤트 시스템과 I/O API 들을 통하여 복잡한 문법들을
간소화 하고 파워풀한 JavaScript 프로그래밍을 가능하게 해준다.
2. Dojo를 페이지에 사용하려면 3가지 단계를 거쳐야 한다.
1) Dojo의 설정파일을 통하여 초기 설절을 한다.
<script type="text/javascript">
// 디버그를 할 것인지 정한다.
djConfig = { isDebug: false };
</script>
2) Dojo 라이브러리를 임포트 한다.
// 스크립트가 로드되면서 Dojo를 사용할 수 있다.
<script type="text/javascript" src="/dojo/dojo-0.4.2-ajax/dojo/dojo.js"></script>
3) 필요한 패키지를 임포트한다.
<script type="text/javascript">
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.*");
</script>
1) dojo.widget.* 이라는 의미는 dojo/src/widget/ 하위의 모든 JS 파일들을 로드하라는 의미이다.
2) 개인이 정의 한 JS 들도 같은 방식으로 로드가 가능하다.
예) dojo.require("example.a"); ==> dojo/src/example/a.js 로드
3. DOJO 이벤트
1) Dojo API중 dojo.event.connect() 를 통하여 Dojo에 기반한 객체가 아니더라도 쉽게 여러가지 이벤트를
관리 할 수 있으며 이때 이벤트의 대상은 객체 , 엘리먼트 등 다양한 대상이 될 수 있다.
// 버튼에 onclick 이벤트를 처리할 핸들러를 등록한다.
function init(){
var helloButton = dojo.widget.byId('helloButton');
dojo.event.connect(helloButton, 'onClick', 'helloPressed')
}
function helloPressed(){
alert('You pressed the button');
}
// 객체(exampleObj)를 생성한 후 객체의 함수에 이벤트와 핸들러를 등록한다.
var exampleObj = {
counter: 0,
foo: function(){
alert("foo");
this.counter++;
},
bar: function(){
alert("bar");
this.counter++;
}
};
// 객체의 함수를 등록하면 함수가 호출될대 이벤트 핸들러를 호출한다.
dojo.event.connect(exampleObj, "foo", exampleObj, "bar");
4. dojo.io.bind 를 사용한 Ajax 사용
1) dojo.io.bind() 함수의 설정을 통하여 Ajax를 쉽고 강력하게 사용할 수 있다.
// 기본적로 호출할 주소 설정 , 완료시 결과를 받을 데이터타입 설정 ,
// 실행이 완료 되었을때 실행될 콜백함수 , 에러발생시 처리함 수 등을 설정할 수있다.
dojo.io.bind({
url: "http://foo.bar.com/sampleData.txt",
load: function(type, data, evt){ /*do something w/ the data */ },
error: function(type, error){ /*do something w/ the error*/ },
//응답이 없을 경우 TimeOut를 지정할 수 있다. 기본 값은 0으로 개속 대한다.
timeoutSeconds: 2,
// 요청한 후 설정된 시간을 초과한다면 핸들러를 통해 처리할 수 있다
timeout: function(type, data, evt){ alert("I am tired of waiting.");}
mimetype: "text/plain"
//Form에 직렬화되 전송될 Data를 설정하고 폼객체를 설정하면 자동으로
//Form의 submit과 똑같은 Data를 전송할 수 있다.
formNode: dojo.byId("myForm");
});
2) 함수의 사용법은 한번에 위의 것 처럼 사용도 가능하지만 설정정보를 객체화 한후 객체를 통한
호출도 가능하다.
var kw = {
url: "http://foo.bar.com/sampleData.txt",
load: function(type, data, evt){ /*do something w/ the data */ },
error: function(type, error){ /*do something w/ the error*/ },
timeoutSeconds: 2,
timeout: function(type, data, evt){ alert("I am tired of waiting.");}
mimetype: "text/plain"
method: "GET"
};
dojo.io.bind(kw);
5. Dojo의 리소스의 사용
1) Dojo에서 필요한 함수나 위젯을 사용하기 위해서는 그것을이 포함되어 있는 파일들을 API를 보고
자바와 같이 임포트 하면되다.
// 다음과 같이 스크립트에 선언한다면 내부적으로는 src/html/extras.js 파일을 인클루드 하게된다.
dojo.require("dojo.html.extras")
6. 위젯의 사용
1) Dojo에서 위젯의 사용은 엘리먼트에 CSS 스타일을 적용하는 것과 비슷하다.
// 다음과 같이 정의된 버튼은 파란색의 버튼을 보여주는데 Dom 노드를 살펴보면
// 버튼을 중심으로 많은 이미지들이 배치된 것을 볼수있는데 CSS와 같이 정해진 엘리먼트를
// Dojo에 정의된 대로 설정해준다.
<button dojoType="Button" id="foo"> Click me </button>
//위젯으로 정의된 객체는 다음과 같이 dojo API를 통하여 호출이 가능하다.
var myButton = dojo.widget.byId("foo");
2) 위젯을 사용하는 방법은 엘리먼트으 속성 , 클래스식 사용, 네임스페이스의 사용 세가지 방법이 있다.
// 엘리먼트의 속성을 사용하여 위젯을 로드한다.
<input dojoType="ComboBox" value="default">
// CSS를 사용하여 위젯을 로드한다.
<input dojoType="ComboBox" value="default" dataUrl="comboBoxData.js">
// 네임스페이스를 사용하여 위젯을 로드한다.
<dojo:ComboBox value="default" dataUrl="comboBoxData.js">
3) 위젯사용의 이점
- 프로그래밍 표현식을 강화하여 읽기가 쉽고 , 구성이 단조로워저 에러를 줄일 수 있다.
- 이미 정의된 기능들을 사용하여 개발 시간을 단축할 수 있다.
- 위젯을 사용하는데는 특별한 노력없이도 객체에 정의된 위젯의 기능과 의미가 일치하는
함수와 필드를 통해 쉽게 개발할 수 있다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 81 | [React.JS] 강좌 목록 | 황제낙엽 | 2020.05.19 | 385 |
| 80 |
Redux: React 앱의 효율적인 데이터 교류
| 황제낙엽 | 2020.05.19 | 971 |
| 79 | Jasmine 관련 | 황제낙엽 | 2020.01.13 | 492 |
| 78 | 마우스 드래그(drag)시 iframe 위에서 컨트롤 잃는 현상과 해결 방안 | 황제낙엽 | 2017.12.12 | 28271 |
| 77 | 다섯 가지의 Ajax 우수 사례 | 황제낙엽 | 2011.04.07 | 490 |
| 76 | 15+ jQuery Popup Modal Dialog Plugins and Tutorials | 황제낙엽 | 2011.03.30 | 574 |
| 75 |
$.ajax() 공략
| 황제낙엽 | 2011.03.27 | 670 |
| 74 | DWR을 이용해서 객체를 JSON으로 변환하기 | 황제낙엽 | 2011.03.25 | 347 |
| 73 |
json을 이용한 로그인 구현
| 황제낙엽 | 2011.03.25 | 832 |
| 72 | How Prototype extends the DOM (Prototype으로 DOM을 확장하는 법) | 황제낙엽 | 2011.03.24 | 695 |
| 71 | 스크랩 | 황제낙엽 | 2009.04.16 | 439 |
| 70 | YUI 스크랩 | 황제낙엽 | 2009.03.12 | 323 |
| 69 | 스크랩 | 황제낙엽 | 2009.03.11 | 316 |
| 68 | 관심 사이트 | 황제낙엽 | 2009.03.12 | 431 |
| 67 | 웹 개발 패러다임의 전환 - Flex와 Ajax의 동거 | 황제낙엽 | 2006.12.21 | 434 |
| 66 | Ajax 강의 정리 | 황제낙엽 | 2006.04.04 | 387 |
| 65 | 자바 기술을 이용한 AJAX의 활용 | 황제낙엽 | 2006.02.08 | 347 |
| 64 |
대표적인 AJAX Framework 소개
| 황제낙엽 | 2007.02.14 | 414 |
| 63 | Ajax Framework 인기 순위: Ajaxian.com | 황제낙엽 | 2007.02.13 | 368 |
| 62 |
prototype.js 를 위한 개발자 노트 (Ajax Framework)
| 황제낙엽 | 2007.02.15 | 335 |