Dojo [펌] 8. DOJO Basic

황제낙엽 2009.03.11 07:19 조회 수 : 31 추천:105

sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  
http://blog.naver.com/rediblue/120036980565

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) 위젯사용의 이점

    

              - 프로그래밍 표현식을 강화하여 읽기가 쉽고 , 구성이 단조로워저 에러를 줄일 수 있다.

              - 이미 정의된 기능들을 사용하여 개발 시간을 단축할 수 있다.

              - 위젯을 사용하는데는 특별한 노력없이도 객체에 정의된 위젯의 기능과 의미가 일치하는

                함수와 필드를 통해 쉽게 개발할 수 있다.