SlideShare une entreprise Scribd logo
1  sur  76
Создание динамических интерфейсов и  AJAX- приложений  промышленного класса с помощью Dojo Toolkit  и  Zend Framework Георгий   Туревич,  Wizartech
Немного о себе ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Промышленный? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
Где взять  Dojo ? ,[object Object],[object Object],[object Object]
Архитектура  Dojo Toolkit
Вкратце о  Core  и  Base ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
Инициализация ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Конфигурирование ,[object Object],[object Object],[object Object],[object Object],Конфигурировать возможно прямо в тэге  <script> : Или программным способом (для соответствия стандартам): <script> var djConfig = {isDebug: true, parseOnLoad: true} </script> <script type=&quot;text/javascript&quot; src=&quot;/dojotoolkit/dojo/dojo.js&quot;> </script>
Система управления пакетами и зависимостями ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Система управления пакетами и зависимостями ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],/js/wlib/Example.js Вывод в консоли  Firebug Lite ( упрощенный аналог плагина для  FF) :
[object Object],Интересное в Base и   Core События dojo.addOnUnload() <script> var onLoadFunc = function() {  console.log('Да! Страница загружена!'); } dojo.addOnLoad(onLoadFunc); </script> <script> var onUnloadFunc = function() { alert('Закрываем страницу'); } dojo.addOnUnload(onUnloadFunc); </script>
Интересное в Base и   Core События ,[object Object],<a href=&quot;http://phpconf.ru&quot; id=&quot;link&quot;>Все на конференцию</a> <script> dojo.connect(dojo.byId('link'),'onclick',   function(evt)   { dojo.stopEvent(evt); console.log('Вы щелкнули на ссылку!'); }); </script>
Интересное в Base и   Core События ,[object Object],<script> function foo() { console.log('Вызвана функция foo') } function bar() { console.log('Вызвана фукция bar')   } var conn = dojo.connect('foo', bar); foo(); console.log('--- Удаляем соединение --- '); dojo.disconnect(conn); foo(); </script>
Интересное в Base и   Core События ,[object Object]
Интересное в Base и   Core События ,[object Object],<script> function handlerFirst(data) { console.log(&quot;Функция handlerFirst, Данные:&quot;, data); } function handlerSecond(data) { console.log(&quot;Функция handlerSecond, Данные:&quot;, data); } var subscrFirst  = dojo.subscribe('mySubscribe', null, handlerFirst); var subscrSecond  = dojo.subscribe('mySubscribe', null, handlerSecond); </script>
Интересное в Base и   Core События ,[object Object],<script> dojo.publish(&quot;mySubscribe&quot;, [&quot;Привет всем!&quot;]); dojo.publish(&quot;mySubscribe&quot;, [&quot;Пока всем!&quot;]); console.log(&quot; --- Очищаем subscrFirst --- &quot;); dojo.unsubscribe(subscrFirst); dojo.publish(&quot;mySubscribe&quot;, [&quot;Привет всем!&quot;]); dojo.publish(&quot;mySubscribe&quot;, [&quot;Пока всем!&quot;]); </script>
Интересное в Base и   Core События ,[object Object]
Интересное в Base и   Core Ajax ,[object Object],[object Object],[object Object],<script> dojo.xhrPost({ url: &quot;./test.php&quot;, handleAs: &quot;text&quot;, content: {a: &quot;1111&quot;, b: &quot;2222&quot;}, load: function(response, ioArgs) { console.log(response); return response; } }); </script> ,[object Object],[object Object]
Интересное в Base и   Core Ajax test.php <?php print_r($_POST);
Интересное в Base и   Core Ajax ,[object Object],<script> function firstCallback(response, ioArgs) { console.log(&quot;Вызван firstCallback : &quot;, response); return response; } function secondCallback(response, ioArgs) { console.log(&quot;Вызван secondCallback : &quot;, response); return response; } </script>
Интересное в Base и   Core Ajax ,[object Object],<script> var deffered = dojo.xhrPost({ url: &quot;./test_deffered.php&quot;, handleAs: &quot;json&quot;, content: {a: &quot;1111&quot;, b: &quot;2222&quot;}, load: function(response, ioArgs) {} }); deffered.addCallback(firstCallback); deffered.addCallback(secondCallback); </script> ,[object Object],[object Object],[object Object]
Интересное в Base и   Core Ajax test _ deffered.php <?php echo json_encode($_POST);
Имитация классов и наследования ,[object Object],<script> dojo.declare(&quot;wlib.ExampleParentFirst&quot;, null, { constructor: function() { console.log(&quot;Вызов конструктора&quot;); } }); dojo.declare(&quot;wlib.ExampleParentSecond&quot;, null, { say: function(message) { console.log(message) } }); </script>
Имитация классов и наследования ,[object Object],<script> dojo.declare( &quot;wlib.ExampleParentChild&quot;, [wlib.ExampleParentFirst, wlib.ExampleParentSecond], { sayBy: function() { this.say(&quot;Всем пока!&quot;) } } ); var child = new wlib.ExampleParentChild(); child.sayBy(); </script>
Имитация классов и наследования ,[object Object]
Имитация классов и наследования ,[object Object],<script> dojo.extend(wlib.ExampleParentChild, { sayHello: function() { this.say(&quot;Всем привет!&quot;); } }) ; var child = new wlib.ExampleParentChild(); child.sayHello(); child.sayBy(); </script>
Имитация классов и наследования ,[object Object],<script> var obj = { firstName: &quot;Иван&quot;, lastName: &quot;Петров&quot; }; var emp = dojo.mixin(obj, { sayName: function() { console.log( &quot;Меня зовут &quot;   + this.firstName + &quot; &quot; + this.lastName ); } }); emp.sayName(); </script>
Имитация классов и наследования ,[object Object],<script> function sayName() { console.log( &quot;Меня зовут &quot; + this.firstName + &quot; &quot; + this.lastName ); } var obj = { firstName: &quot;Иван&quot;, lastName: &quot;Петров&quot; }; var callback = dojo.hitch(obj, sayName); callback(); </script>
[object Object],[object Object]
Что такое  Dijit ? ,[object Object],[object Object],[object Object]
Элементы форм
Что такое  Dijit ? ,[object Object],[object Object],[object Object],[object Object]
Виджеты компоновки
Что такое  Dijit ? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Виджеты приложения
Что такое  Dijit ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Инициализация виджетов <script src=&quot;/dojotoolkit/dojo/dojo.js&quot; djConfig=&quot;isDebug: true,  parseOnLoad: true &quot; ></script> <script> dojo.require(&quot; dijit.form.Button &quot;); </script> <link id=&quot;themeStyles&quot; rel=&quot;stylesheet&quot; href=&quot; /dojotoolkit/dijit/themes/tundra/tundra.css &quot;> ,[object Object],[object Object],[object Object],[object Object]
Инициализация виджетов <div class=&quot;tundra&quot;> <button id=&quot;buttonHello&quot;></button> <button dojoType=&quot;dijit.form.Button&quot;> Щелкни по мне! </button> </div> <script> var button = new dijit.form.Button({ label: &quot;Привет!&quot;, name: &quot;programmatic&quot; }, &quot;buttonHello&quot;); </script> В секции  <body> :
Инициализация виджетов ,[object Object],[object Object]
Возможности расширения ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
Dojox ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dojox ,[object Object],[object Object],[object Object],[object Object],[object Object]
Dojox ,[object Object]
[object Object],[object Object]
Абстракция  работы с данными ,[object Object],[object Object],[object Object],[object Object],[object Object]
Абстракция  работы с данными ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
Подготовка к выпуску в эксплуатацию ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
D.O.H Система модульного тестирования ,[object Object]
Интеграция  Dojo Toolkit и  Zend Framework ,[object Object],[object Object],[object Object],[object Object]
[object Object]
Программная настройка  Dojo -окружения ,[object Object],<style type=&quot;text/css&quot;> @import &quot;/js/dojo-toolkit/dijit/themes/tundra/tundra.css&quot;; </style> <script type=&quot;text/javascript&quot;> var djConfig = {&quot;isDebug&quot;:true,&quot;parseOnLoad&quot;:true}; </script> <script type=&quot;text/javascript&quot;  src=&quot;/js/dojo-toolkit/dojo/dojo.js&quot;></script> <script type=&quot;text/javascript&quot;> dojo.require(&quot;dojo.io.script&quot;); dojo.require(&quot;dojo.fx&quot;); dojo.require(&quot;dijit.form.Button&quot;); </script>
Программная настройка  Dojo -окружения ,[object Object],<?=$this->dojo() ->enable() ->setDjConfig( array('isDebug' => true, 'parseOnLoad' => true) ) ->setLocalPath('/js/dojo-toolkit/dojo/dojo.js') ->addStyleSheetModule('dijit.themes.tundra') ->requireModule( array('dojo.io.script', 'dojo.fx', 'dijit.form.Button') )?>
Программная настройка  Dojo -окружения ,[object Object],[object Object],[object Object],<?=$this->dojo() ?> И в  application.ini : resources.dojo.djConfig.isDebug = 1 resources.dojo.djConfig.parseOnLoad = 1 resources.dojo.localPath = &quot;/js/dojo-toolkit/dojo/dojo.js&quot; resources.dojo.requireModule[] = &quot;dojo.io.script&quot; resources.dojo.requireModule[] = &quot;dojo.fx&quot; resources.dojo.requireModule[] = &quot;dijit.form.Button&quot; В макете указываем:
Работа с виджетами View- хелперы ,[object Object],<h1>Форма</h1> <div class=&quot;tundra&quot;> <form> <?=$this->editor('editor')?> <?=$this->button( 'send', 'Отправить')?> </form> </div>
Работа с виджетами Элементы форм ,[object Object],$form = new Zend_Dojo_Form(); $form->addElement('editor', 'editor'); $form->addElement( 'button', 'send', array('label' => 'Отправить') ); $this->view->form = $form; <h1>Форма</h1> <div class=&quot;tundra&quot;> <?=$this->form?> </div> В шаблоне:
Работа с виджетами Состав компонентов ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ajax Zend_Dojo_Data ,[object Object],public function dojoDataExampleAction() { $form = new Zend_Dojo_Form(); $form->addElement( 'FilteringSelect', 'city', array( 'label' => 'City', 'storeId' => 'cityStore', 'storeType' => 'dojo.data.ItemFileReadStore', 'storeParams' => array( 'url' => '/json/simple-city-store/', ), 'dijitParams' => array( 'searchAttr' => 'name', ) ) ); $this->view->form = $form; }
Ajax Zend_Dojo_Data ,[object Object],public function simpleCityStoreAction() { $data = array( array('id' => 1, 'name' => 'Волгоград'), array('id' => 2, 'name' => 'Москва'), array('id' => 3, 'name' => 'Минск'), array('id' => 4, 'name' => 'Мурманск') ); $dojoData = new Zend_Dojo_Data('id', $data); echo $dojoData; }
Ajax Zend_Dojo_Data ,[object Object],{ &quot;identifier&quot;:&quot;id&quot;, &quot;items&quot;:[ {&quot;id&quot;:1,&quot;name&quot;:&quot;Волгоград&quot;}, {&quot;id&quot;:2,&quot;name&quot;:&quot;Москва&quot;}, {&quot;id&quot;:3,&quot;name&quot;:&quot;Минск&quot;}, {&quot;id&quot;:4,&quot;name&quot;:&quot;Мурманск&quot;} ] }
Ajax Zend_Dojo_Data ,[object Object],<div class=&quot;tundra&quot;><?=$this->form?></div> Вуаля!
Ajax JSON-RPC ,[object Object],<? $this->dojo()->requireModule(&quot;dojo.rpc.JsonService&quot;); ?> <? $this->dojo()->onLoadCaptureStart(); ?> function() { var o = { &quot;serviceType&quot;: &quot;JSON-RPC&quot;, &quot;serviceUrl&quot;: &quot;/json/rpc-server&quot;, &quot;methods&quot;: [{ &quot;name&quot;: &quot;sum&quot;, &quot;parameters&quot;: [ {name: &quot;numbers&quot;} ] }] } ... } <? $this->dojo()->onLoadCaptureEnd(); ?>
Ajax JSON-RPC ,[object Object],... var rpcObject = new dojo.rpc.JsonService(o) var sum = rpcObject.sum([4,8,15,16,23,42]); sum.addCallback(function(response) { console.log(&quot;Сумма чисел: &quot;, response) }); Запрос: {&quot;params&quot;:[[4,8,15,16,23,42]],&quot;method&quot;:&quot;sum&quot;,&quot;id&quot;:1}
Ajax JSON-RPC ,[object Object],class Default_Model_RpcTest { function sum($numbers) { return array_sum($numbers); } }
Ajax JSON-RPC ,[object Object],public function rpcServerAction() { $server = new Zend_Json_Server(); $server->setClass('Default_Model_RpcTest'); $server->handle(); } Результат:
Ajax Rest ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ajax Rest ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Выпуск в эксплуатацию Слой сборки ,[object Object],dojo.provide(&quot;custom.main&quot;); (function(){ dojo.require(&quot;dojo.io.script&quot;); dojo.require(&quot;dojo.fx&quot;); dojo.require(&quot;dijit.form.Button&quot;); })();
Выпуск в эксплуатацию Профиль сборки dependencies = { action:&quot;release&quot;, optimize:&quot;shrinksafe&quot;, layerOptimize:&quot;shrinksafe&quot;, copyTests:false, loader:&quot;default&quot;, cssOptimize:&quot;comments&quot;, releaseName:&quot;custom&quot;, layers:[{ name:&quot;custom.main.js&quot;, layerDependencies:[], dependencies:[&quot;custom.main&quot;] }], prefixes:[ [&quot;custom&quot;,&quot;../custom&quot;], [&quot;dojo&quot;,&quot;../dojo&quot;], [&quot;dijit&quot;,&quot;../dijit&quot;] ] };
Выпуск в эксплуатацию Генерация профиля и слоя ,[object Object],public function buildAction() { $build = new Zend_Dojo_BuildLayer(array( 'view' => $this->view, 'layerScriptPath' => 'custom.main.js', 'layerName' => 'custom.main', )); $profile = $build->generateBuildProfile(); $layerScript = $build->generateLayerScript(); }
Подробнее? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Подробнее? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]

Contenu connexe

Tendances

JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4Technopark
 
Дополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOMДополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOMDenis Latushkin
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptDenis Latushkin
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЯковенко Кирилл
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8Technopark
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDKrivoy Rog IT Community
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7Technopark
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.Igor Shkulipa
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf Conference
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаAlexander Kucherenko
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0matroskin1980
 
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...DevDay
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.Igor Shkulipa
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2Technopark
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Evgeny Borisov
 

Tendances (20)

JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
Kranonit s16 (python). dmitry furzenko
Kranonit s16 (python). dmitry furzenkoKranonit s16 (python). dmitry furzenko
Kranonit s16 (python). dmitry furzenko
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 
Дополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOMДополнительные приёмы работы в DOM
Дополнительные приёмы работы в DOM
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на Javascript
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-framework
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языка
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
 
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1
 

En vedette

Generalmural2009
Generalmural2009Generalmural2009
Generalmural2009drosdicc
 
Transforming Learning For Educators And Students
Transforming Learning For Educators And StudentsTransforming Learning For Educators And Students
Transforming Learning For Educators And Studentsschool merit
 
AQ Services International
AQ Services InternationalAQ Services International
AQ Services InternationalSamplonius
 
Presentacion i can
Presentacion i canPresentacion i can
Presentacion i canjair
 
G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36
G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36
G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36Saharahí Querales
 
Mass notebook in bicol dialect
Mass notebook  in bicol dialectMass notebook  in bicol dialect
Mass notebook in bicol dialectluz tria
 
If you are happy
If you are happyIf you are happy
If you are happyjair
 
New business venture tinsel town
New business venture  tinsel townNew business venture  tinsel town
New business venture tinsel townankitabaru
 
Mass Guide in Bicol Dialect
Mass Guide  in Bicol Dialect Mass Guide  in Bicol Dialect
Mass Guide in Bicol Dialect luz tria
 
The house that jack built
The house that jack builtThe house that jack built
The house that jack builtjair
 
Ub Group -product and brand management
Ub Group -product and brand managementUb Group -product and brand management
Ub Group -product and brand managementankitabaru
 
THE COKE SCANDAL
THE COKE SCANDALTHE COKE SCANDAL
THE COKE SCANDALankitabaru
 
G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...
G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...
G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...Saharahí Querales
 
G.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO
G.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIOG.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO
G.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIOSaharahí Querales
 
G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...
G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...
G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...Saharahí Querales
 
G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...
G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...
G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...Saharahí Querales
 
G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100
G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100
G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100Saharahí Querales
 

En vedette (19)

Generalmural2009
Generalmural2009Generalmural2009
Generalmural2009
 
Mainak Ppt
Mainak PptMainak Ppt
Mainak Ppt
 
Transforming Learning For Educators And Students
Transforming Learning For Educators And StudentsTransforming Learning For Educators And Students
Transforming Learning For Educators And Students
 
AQ Services International
AQ Services InternationalAQ Services International
AQ Services International
 
Presentacion i can
Presentacion i canPresentacion i can
Presentacion i can
 
G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36
G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36
G.O.N°41.040 28 nov-2016-Modificación convenio cambiario n° 36
 
Mass notebook in bicol dialect
Mass notebook  in bicol dialectMass notebook  in bicol dialect
Mass notebook in bicol dialect
 
Lenguaje de programacion java
Lenguaje de programacion javaLenguaje de programacion java
Lenguaje de programacion java
 
If you are happy
If you are happyIf you are happy
If you are happy
 
New business venture tinsel town
New business venture  tinsel townNew business venture  tinsel town
New business venture tinsel town
 
Mass Guide in Bicol Dialect
Mass Guide  in Bicol Dialect Mass Guide  in Bicol Dialect
Mass Guide in Bicol Dialect
 
The house that jack built
The house that jack builtThe house that jack built
The house that jack built
 
Ub Group -product and brand management
Ub Group -product and brand managementUb Group -product and brand management
Ub Group -product and brand management
 
THE COKE SCANDAL
THE COKE SCANDALTHE COKE SCANDAL
THE COKE SCANDAL
 
G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...
G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...
G.O.N° 40.557 08-DIC-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO (REIMPRE...
 
G.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO
G.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIOG.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO
G.O.E.N° 6.154 19-NOV-2014 - LEY DE INSTITUCIONES DEL SECTOR BANCARIO
 
G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...
G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...
G.O.E.N° 6.269 28-OCT-2016-Aumento salario minimo y ajuste base calculo cesta...
 
G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...
G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...
G.O.N°41.046 06 dic-2016-providencia_cumplimiento_deberes_formales_registro,a...
 
G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100
G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100
G.O.E.N°6.275 11 Dic-2016-CESE CURSO LEGAL BILLETES Bs.100
 

Similaire à Rich UI on Dojo Toolkit and Zend Framework

Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demomegakott
 
Building corporate portals with liferay JEEConf 2011
Building corporate portals with liferay   JEEConf 2011Building corporate portals with liferay   JEEConf 2011
Building corporate portals with liferay JEEConf 2011Alexey Kakunin
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Eugene Zharkov
 
Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0akrakovetsky
 
Django шахрай. версия 4
Django шахрай. версия 4Django шахрай. версия 4
Django шахрай. версия 4smikler
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf Conference
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11dva
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf Conference
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''DneprCiklumEvents
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit TechGraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit TechZlit
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаprivate_face
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 

Similaire à Rich UI on Dojo Toolkit and Zend Framework (20)

Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demo
 
Building corporate portals with liferay JEEConf 2011
Building corporate portals with liferay   JEEConf 2011Building corporate portals with liferay   JEEConf 2011
Building corporate portals with liferay JEEConf 2011
 
Js fuckworks
Js fuckworksJs fuckworks
Js fuckworks
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?
 
Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0
 
Django шахрай. версия 4
Django шахрай. версия 4Django шахрай. версия 4
Django шахрай. версия 4
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit TechGraphQL API: Patterns | Андрей Чиж | Zlit Tech
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 

Rich UI on Dojo Toolkit and Zend Framework

  • 1. Создание динамических интерфейсов и AJAX- приложений промышленного класса с помощью Dojo Toolkit и Zend Framework Георгий Туревич, Wizartech
  • 2.
  • 3.
  • 4.
  • 5.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. Интересное в Base и Core Ajax test.php <?php print_r($_POST);
  • 22.
  • 23.
  • 24. Интересное в Base и Core Ajax test _ deffered.php <?php echo json_encode($_POST);
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 34.
  • 36.
  • 38.
  • 39.
  • 40. Инициализация виджетов <div class=&quot;tundra&quot;> <button id=&quot;buttonHello&quot;></button> <button dojoType=&quot;dijit.form.Button&quot;> Щелкни по мне! </button> </div> <script> var button = new dijit.form.Button({ label: &quot;Привет!&quot;, name: &quot;programmatic&quot; }, &quot;buttonHello&quot;); </script> В секции <body> :
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72. Выпуск в эксплуатацию Профиль сборки dependencies = { action:&quot;release&quot;, optimize:&quot;shrinksafe&quot;, layerOptimize:&quot;shrinksafe&quot;, copyTests:false, loader:&quot;default&quot;, cssOptimize:&quot;comments&quot;, releaseName:&quot;custom&quot;, layers:[{ name:&quot;custom.main.js&quot;, layerDependencies:[], dependencies:[&quot;custom.main&quot;] }], prefixes:[ [&quot;custom&quot;,&quot;../custom&quot;], [&quot;dojo&quot;,&quot;../dojo&quot;], [&quot;dijit&quot;,&quot;../dijit&quot;] ] };
  • 73.
  • 74.
  • 75.
  • 76.