한국투자증권 주식매매프로그램 만들기

파이썬 주식매매프로그램 만들기

Dojo/Widget Coding Style

Dojo 의 두 가지 코딩 방법

토폴로지 2013. 8. 8. 07:14

Dojo 가지 코딩 방법

Dojo  위젯을 불러올 가지 스타일인 declarative programmatic 존재한다. programmatic 경우 javascript 사용하여 object 생성하고 해당 object 대한 function이나 attribute 설정한다. declarative 경우 html 처럼 프로그램을 작성하고 뒤에 특정 attribute 더해서 Dojo위젯을 불러온다. 자세히 말하자면 dojo/parser 이용하여 해당 페이지의 DOM parsing special attribute script tag 해석하여 평범한 html code dojo widget으로 확장시킨다. declarative 쓰기 쉽고 page 작성하는데 있어서 빠르며 javascript 대한 깊은 이해를 필요로 하지 않는다. 하지만 declarative 경우 widget 몇몇 기능밖에 쓰질 못하는 한계가 있다. 그리고 programmactic보다 속도면에서 약간 느린데 이유는 해당 page dojo/parser DOM node들을 먼저 분석해야하기 때문이다.

button 이용한 code 비교

programmatic

<html>

<head>

       <link rel="stylesheet" href="dojo-release-1.9.1/dijit/themes/claro/claro.css">

       <script src='dojo-release-1.9.1/dojo/dojo.js'></script>

       <script>

                       require(["dijit/form/Button", "dojo/domReady!"], function(Button){

                                       // Create a button programmatically:

                                       var myButton = new Button({

                                                       label: "Click me!",

                                                       onClick: function(){

                                                                       // Do something:

                                                       }

                                       }, "progButtonNode");

                       });

       </script>

</head>

<body class="claro">

    <button id="progButtonNode" type="button"></button>

</body>

</html>

Table 1 programmtic button code

declarative

 

<html>

<head>

       <title>Tutorial: A Button</title>

       <link rel="stylesheet" href="dojo-release-1.9.1/dijit/themes/claro/claro.css">

       <script src="dojo-release-1.9.1/dojo/dojo.js"></script>

       <script type="text/javascript">

                       require(["dojo/parser", "dojo/ready", "dijit/form/Button"], function(parser, ready){

                                       ready(function(){

                                                       parser.parse();

                                       });

                       });

       </script>

</head>

<body class="claro">

       <button type="button" data-dojo-type="dijit/form/Button">

                       <span>Click Me!</span>

       </button>

</body>

</html>

Table 2 declarative button code

code 비교

declarative 경우 data-dojo-type이라는 special attribute 부여하여 dojo/parser 인식하도록 dijit/form/button 불러왔다. programmatic 경우 mybutton이라는 object 생성하여dijit/form/button 불러오는 모습이다.

Declarative parseonload option 이용

<html>

<head>

       <title>Tutorial: A Button</title>

       <link rel="stylesheet" href="dojo-release-1.9.1/dijit/themes/claro/claro.css">

       <script src='dojo-release-1.9.1/dojo/dojo.js' data-dojo-config="parseOnLoad: true"></script>

       <script type="text/javascript">

                       require(["dojo/parser", "dijit/form/Button","dojo/domReady!"]);

       </script>

</head>

<body class="claro">

       <button type="button" data-dojo-type="dijit/form/Button">

                       <span>Click Me!</span>

       </button>

</body>

</html>

Table 3 parseonload를 이용한 declarative code

코드 설명

Table 3 parseonload 옵션을 이용하여 dojo module dojo/parser dijit/form/Button 굳이 호출할 필요가 없어졌으며 해당 code 명시적으로 적어주었다. parseonload 옵션을 이용하면 간단하게 코드를 만들 있으며, Table4 해당하는 Code 삭제하여도 웹페이지에 이상은 없다.

<script type="text/javascript">

                       require(["dojo/parser", "dijit/form/Button","dojo/domReady!"]);

</script>

Table 4 Table3 Code 중 일부분

 

결과 화면

 

Figure 1 Table1 Table2의 결과 화면

반응형