SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Библиотека GoogleClosureJavaScript Инструменты в руках разработчика
Клиентские JavaScriptбиблиотеки jQuery: кросс-браузерныйдвижок CSS-селекторов проход по DOM-дереву, поддержка XPath события манипуляции с CSS  визуальные эффекты AJAX-дополнения JavaScript-плагины  2
Клиентские JavaScript библиотеки DojoToolkit: CSS-запросы события визуальные эффекты анимация Ajax пакетная система элементы интерфейса 3
Клиентские JavaScript библиотеки MooTools:  расширяемая и модульная структура компоненты эффектов с переходами манипулирование с DOM манипулирование CSS элементов AJAX-запросы модуль загрузки модулей и зависимостей, которые нужны для конкретного приложения 4
GoogleClosureTools ClosureCompiler оптимизатор  переписывает JavaScript делает код быстрым и компактным 5
GoogleClosureTools ClosureTemplates система шаблонов  динамическая генерация HTML интеграция Javaи JavaScript 6
GoogleClosureTools ClosureLinter пакет консольных утилит проверяюти корректируют JavaScript соответствиесо стилистическим правилам: размещение операторов отсутствие точки с запятой пробелы наличие JSDocаннотации и т. п. 7
GoogleClosureTools JavascriptLibrary модульная архитектура специально под ClosureCompiler манипуляция DOM и CSS события AJAX и JSON объекты интерфейса:виджеты, элементы управления, формы и т. д. 8
Google Closure JavaScript Общие принципы каждый тип в отдельном каталоге каждый пакет в отдельном файле функции предоставляет именно пакет нельзя подключить все пакеты типа одной командой только если подключаемый пакет зависит от всех пакетов типа 9
Google Closure JavaScript Подключение необходимых пакетов goog.require('goog.dom'); goog.require('goog.dom.classes'); 10
Google Closure JavaScriptПоиск элементов в DOM Элемент по id goog.dom.getElement('id'); используя псевдоним goog.dom.$('id'); 11
Google Closure JavaScriptПоиск элементов в DOM Первый элемент с определенным className goog.dom.getElementByClass('className'); внутри родителя goog.dom.getElementByClass('className', parentElement); 12
Google Closure JavaScriptПоиск элементов в DOM Все элементы с определенным className goog.dom.getElementsByClass('className'); внутри родителя goog.dom.getElementsByClass('className', parentElement); 13
Google Closure JavaScriptПоиск элементов в DOM Все дочерние элементы с определенными tagNameи className goog.dom.getElementsByTagNameAndClass( 'tagName', 'className', parentElement); используя псевдоним goog.dom.$$('tagName', 'className', parentElement); 14
Google Closure JavaScriptПоиск элементов в DOM Все дочерние элементы с определенными className1или className2 goog.dom.getElementsByTagNameAndClass( null, 'className1, className2', parentElement); 15
Google Closure JavaScriptПоиск элементов в DOM Ближайший родитель с определенным className goog.dom.getAncestorByClass(childElement, 'className'); 16
Google Closure JavaScriptПоиск элементов в DOM Ближайший родитель с определенными className и tagName goog.dom.getAncestorByTagNameAndClass(childElement, 'tagName', 'className'); 17
Google Closure JavaScriptИзменение DOM Создаем элемент varnewBox = goog.dom.createDom('div', {'style':'border:1px solidred;','class': 'box‘},'Textonbox‘); используя псевдоним varnewBox = goog.dom.$dom('div', {'style':'border:1px solidred;','class': 'box‘},'Textonbox'); 18
Google Closure JavaScriptИзменение DOM Добавляем в DOM goog.dom.appendChild(document.body, newBox); 19
Google Closure JavaScriptРабота с классами Задание имя класса элементу goog.dom.classes.set(element, 'className'); Получение всех классов элемента goog.dom.classes.get(element); Проверка наличия класса goog.dom.classes.has(element, 'className'); 20
Google Closure JavaScriptРабота с классами Добавление классов или нескольких goog.dom.classes.add(element, 'className1', 'className2'); Удаление класса или нескольких goog.dom.classes.remove(element,'className1', 'className2'); 21
Google Closure JavaScriptРабота с классами Переключение между классами goog.dom.classes.swap(element, 'fromClass', 'toClass'); Добавление и удаление классов за один подход goog.dom.classes.addRemove(element, 'addClass', ['removeClass']); 22
Google Closure JavaScriptРабота с классами Добавление/удаление класса по флагу goog.dom.classes.enable(element, 'className', true||false); Если класс – удалить, если нет – добавить goog.dom.classes.toggle(element, 'className'); 23
Google Closure JavaScriptРабота со стилями Подключение пакета goog.require('goog.style'); 24
Google Closure JavaScriptРабота со стилями Получение значения атрибута goog.style.getStyle(element, 'border') ; установка значения goog.style.setStyle(element, 'border-color', 'red'); или goog.style.setStyle(element, {'padding-top': '5px', 'padding-bottom': '5px'}); 25
Google Closure JavaScriptРабота со стилями Прозрачность и видимость элементов: Получение значения opacity goog.style.getOpacity(element); Установка значения opacity goog.style.setOpacity(element, .5); 26
Google Closure JavaScriptРабота со стилями Прозрачность и видимость элементов:   Сокрытие элемента goog.style.showElement(element, false);  и показ goog.style.showElement(element, true); 27
Google Closure JavaScriptРабота с событиями Подключаем пакет goog.require('goog.events'); goog.require('goog.events.EventType'); 28
Google Closure JavaScriptРабота с событиями Вешаем хендлер события на элемент: goog.events.listen(element, 'click', function(event){ … });   Вешаем одноразовый хендлер события на элемент: goog.events.listenOnce(element, 'click', function(event){ … }); 29
Google Closure JavaScriptРабота с событиями Удаляем все обработчики с элемента goog.events.removeAll(element); Удаляем все обработчики со всего goog.events.removeAll(); 30
Google Closure JavaScriptРабота с событиями Вызываем clickна другом объектес передачей текущего объекта-события (event) goog.events.listen(element, 'click', function(event){ goog.events.fireListeners(newElement, 'click',false, event); }); 31
Google Closure JavaScriptРабота с событиями Вызываем clickна другом объектевчистую goog.events.listen(element, 'click', function(event){ goog.events.fireListeners(newElement, 'click',false, new goog.events.Event('click')); }); 32
Проблемы c Google Closure JavaScriptи решения Issues Документация Проблемы «мобилизации» приложения Сложность упаковки проекта Порядок подключения пакетов Solutions Исходники, публикации Компиляция Компиляция Исходники 33
jQuery jquery.js Mootools mootools-core.js Dojo Toolkit dojo.js Google Closure JS base.js Сравнение фреймворков с дополнениями 34
Сравнение фреймворков jQuery jquery.js Mootools mootools-core.js Dojo Toolkit dojo.js Google Closure JS base.js с дополнениями 35
Сравнение фреймворков jQuery jquery.js Mootools mootools-core.js Dojo Toolkit dojo.js Google Closure JS base.js с дополнениями 36
Ссылки: Home: http://code.google.com/p/closure-library/ Downloads: http://code.google.com/p/closure-library/downloads/list API Documentation: http://closure-library.googlecode.com/svn/docs/index.html GoogleClosure руководство для начинающих: http://anton.shevchuk.name/javascript/google-closure-for-beginners-with-examples/ Контакты: Skype:vladfrandom Email: volodymyr_forfutdinov@epam.com Спасибо за внимание. Вопросы? 37

Weitere ähnliche Inhalte

Was ist angesagt?

Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Denis Tsvettsih
 
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYYMail.ru Group
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадSQALab
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETDev2Dev
 
Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - DatabaseNoveo
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Denis Tsvettsih
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.Igor Shkulipa
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETDev2Dev
 
Клиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхКлиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхKirill Zotin
 
Модульная структура
Модульная структураМодульная структура
Модульная структураDenis Tsvettsih
 
Как приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложенияхКак приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложенияхDenis Tsvettsih
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Fedor Malyshkin
 
Разработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstРазработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstDenis Tsvettsih
 
Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяYuri Shmakov
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016Anastasia Goryacheva
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программированиеDenis Tsvettsih
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETDev2Dev
 

Was ist angesagt? (20)

Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
 
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
 
Обзор возможностей HTML5
Обзор возможностей HTML5Обзор возможностей HTML5
Обзор возможностей HTML5
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
 
Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - Database
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus
 
Silverlight 5
Silverlight 5Silverlight 5
Silverlight 5
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Клиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхКлиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталях
 
Модульная структура
Модульная структураМодульная структура
Модульная структура
 
Как приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложенияхКак приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложениях
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
Разработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstРазработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel First
 
Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоваться
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 

Andere mochten auch

Expozitie de copii - Grupa Paunilor
Expozitie de copii - Grupa PaunilorExpozitie de copii - Grupa Paunilor
Expozitie de copii - Grupa PaunilorRadu Capan
 
Dit ben ik x d
Dit ben ik x dDit ben ik x d
Dit ben ik x dFrank
 
Cei trei tati - Grupa Pumelor
Cei trei tati - Grupa PumelorCei trei tati - Grupa Pumelor
Cei trei tati - Grupa PumelorRadu Capan
 
Copilul perfect - Grupa Leiilor
Copilul perfect - Grupa LeiilorCopilul perfect - Grupa Leiilor
Copilul perfect - Grupa LeiilorRadu Capan
 
עדכון מצב המאבק 16.9.2010
עדכון מצב המאבק 16.9.2010עדכון מצב המאבק 16.9.2010
עדכון מצב המאבק 16.9.2010Dvir Gassner
 
Bogatul si taranul - Grupa Leilor
Bogatul si taranul - Grupa LeilorBogatul si taranul - Grupa Leilor
Bogatul si taranul - Grupa LeilorRadu Capan
 
Cartierele din Eden - Grupa Paunilor
Cartierele din Eden - Grupa PaunilorCartierele din Eden - Grupa Paunilor
Cartierele din Eden - Grupa PaunilorRadu Capan
 
Manager zburator - Grupa Paunii
Manager zburator - Grupa PauniiManager zburator - Grupa Paunii
Manager zburator - Grupa PauniiRadu Capan
 
Partner Program
Partner ProgramPartner Program
Partner ProgramSiba Panda
 
Partner presentation-final
Partner presentation-finalPartner presentation-final
Partner presentation-finalSiba Panda
 
Digital transformation demonstration
Digital transformation demonstrationDigital transformation demonstration
Digital transformation demonstrationSiba Panda
 
Partners presentation-final
Partners presentation-finalPartners presentation-final
Partners presentation-finalSiba Panda
 
Digital transformation presentation
Digital transformation presentationDigital transformation presentation
Digital transformation presentationSiba Panda
 

Andere mochten auch (14)

Expozitie de copii - Grupa Paunilor
Expozitie de copii - Grupa PaunilorExpozitie de copii - Grupa Paunilor
Expozitie de copii - Grupa Paunilor
 
Dit ben ik x d
Dit ben ik x dDit ben ik x d
Dit ben ik x d
 
Cei trei tati - Grupa Pumelor
Cei trei tati - Grupa PumelorCei trei tati - Grupa Pumelor
Cei trei tati - Grupa Pumelor
 
Copilul perfect - Grupa Leiilor
Copilul perfect - Grupa LeiilorCopilul perfect - Grupa Leiilor
Copilul perfect - Grupa Leiilor
 
עדכון מצב המאבק 16.9.2010
עדכון מצב המאבק 16.9.2010עדכון מצב המאבק 16.9.2010
עדכון מצב המאבק 16.9.2010
 
Bogatul si taranul - Grupa Leilor
Bogatul si taranul - Grupa LeilorBogatul si taranul - Grupa Leilor
Bogatul si taranul - Grupa Leilor
 
Cartierele din Eden - Grupa Paunilor
Cartierele din Eden - Grupa PaunilorCartierele din Eden - Grupa Paunilor
Cartierele din Eden - Grupa Paunilor
 
Manager zburator - Grupa Paunii
Manager zburator - Grupa PauniiManager zburator - Grupa Paunii
Manager zburator - Grupa Paunii
 
Big table
Big tableBig table
Big table
 
Partner Program
Partner ProgramPartner Program
Partner Program
 
Partner presentation-final
Partner presentation-finalPartner presentation-final
Partner presentation-final
 
Digital transformation demonstration
Digital transformation demonstrationDigital transformation demonstration
Digital transformation demonstration
 
Partners presentation-final
Partners presentation-finalPartners presentation-final
Partners presentation-final
 
Digital transformation presentation
Digital transformation presentationDigital transformation presentation
Digital transformation presentation
 

Ähnlich wie Библиотека Google Closure Java Script

Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Yandex
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.Igor Shkulipa
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with SeleniumSergey Shvets
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 
Serge P Nekoval Grails
Serge P  Nekoval GrailsSerge P  Nekoval Grails
Serge P Nekoval Grailsrit2010
 
Grails. Поиски закончены.
Grails. Поиски закончены.Grails. Поиски закончены.
Grails. Поиски закончены.nekoval
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupalCamp Kyiv Рысь
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Dev_Party
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкRoman Dvornov
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptAlexey Ivanov
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеYandex
 

Ähnlich wie Библиотека Google Closure Java Script (20)

Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
Module 4
Module 4Module 4
Module 4
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 
Serge P Nekoval Grails
Serge P  Nekoval GrailsSerge P  Nekoval Grails
Serge P Nekoval Grails
 
Grails. Поиски закончены.
Grails. Поиски закончены.Grails. Поиски закончены.
Grails. Поиски закончены.
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайт
 
Drupal 7 and History.js
Drupal 7 and History.jsDrupal 7 and History.js
Drupal 7 and History.js
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
Javascript
JavascriptJavascript
Javascript
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
 

Библиотека Google Closure Java Script

  • 2. Клиентские JavaScriptбиблиотеки jQuery: кросс-браузерныйдвижок CSS-селекторов проход по DOM-дереву, поддержка XPath события манипуляции с CSS визуальные эффекты AJAX-дополнения JavaScript-плагины  2
  • 3. Клиентские JavaScript библиотеки DojoToolkit: CSS-запросы события визуальные эффекты анимация Ajax пакетная система элементы интерфейса 3
  • 4. Клиентские JavaScript библиотеки MooTools: расширяемая и модульная структура компоненты эффектов с переходами манипулирование с DOM манипулирование CSS элементов AJAX-запросы модуль загрузки модулей и зависимостей, которые нужны для конкретного приложения 4
  • 5. GoogleClosureTools ClosureCompiler оптимизатор переписывает JavaScript делает код быстрым и компактным 5
  • 6. GoogleClosureTools ClosureTemplates система шаблонов динамическая генерация HTML интеграция Javaи JavaScript 6
  • 7. GoogleClosureTools ClosureLinter пакет консольных утилит проверяюти корректируют JavaScript соответствиесо стилистическим правилам: размещение операторов отсутствие точки с запятой пробелы наличие JSDocаннотации и т. п. 7
  • 8. GoogleClosureTools JavascriptLibrary модульная архитектура специально под ClosureCompiler манипуляция DOM и CSS события AJAX и JSON объекты интерфейса:виджеты, элементы управления, формы и т. д. 8
  • 9. Google Closure JavaScript Общие принципы каждый тип в отдельном каталоге каждый пакет в отдельном файле функции предоставляет именно пакет нельзя подключить все пакеты типа одной командой только если подключаемый пакет зависит от всех пакетов типа 9
  • 10. Google Closure JavaScript Подключение необходимых пакетов goog.require('goog.dom'); goog.require('goog.dom.classes'); 10
  • 11. Google Closure JavaScriptПоиск элементов в DOM Элемент по id goog.dom.getElement('id'); используя псевдоним goog.dom.$('id'); 11
  • 12. Google Closure JavaScriptПоиск элементов в DOM Первый элемент с определенным className goog.dom.getElementByClass('className'); внутри родителя goog.dom.getElementByClass('className', parentElement); 12
  • 13. Google Closure JavaScriptПоиск элементов в DOM Все элементы с определенным className goog.dom.getElementsByClass('className'); внутри родителя goog.dom.getElementsByClass('className', parentElement); 13
  • 14. Google Closure JavaScriptПоиск элементов в DOM Все дочерние элементы с определенными tagNameи className goog.dom.getElementsByTagNameAndClass( 'tagName', 'className', parentElement); используя псевдоним goog.dom.$$('tagName', 'className', parentElement); 14
  • 15. Google Closure JavaScriptПоиск элементов в DOM Все дочерние элементы с определенными className1или className2 goog.dom.getElementsByTagNameAndClass( null, 'className1, className2', parentElement); 15
  • 16. Google Closure JavaScriptПоиск элементов в DOM Ближайший родитель с определенным className goog.dom.getAncestorByClass(childElement, 'className'); 16
  • 17. Google Closure JavaScriptПоиск элементов в DOM Ближайший родитель с определенными className и tagName goog.dom.getAncestorByTagNameAndClass(childElement, 'tagName', 'className'); 17
  • 18. Google Closure JavaScriptИзменение DOM Создаем элемент varnewBox = goog.dom.createDom('div', {'style':'border:1px solidred;','class': 'box‘},'Textonbox‘); используя псевдоним varnewBox = goog.dom.$dom('div', {'style':'border:1px solidred;','class': 'box‘},'Textonbox'); 18
  • 19. Google Closure JavaScriptИзменение DOM Добавляем в DOM goog.dom.appendChild(document.body, newBox); 19
  • 20. Google Closure JavaScriptРабота с классами Задание имя класса элементу goog.dom.classes.set(element, 'className'); Получение всех классов элемента goog.dom.classes.get(element); Проверка наличия класса goog.dom.classes.has(element, 'className'); 20
  • 21. Google Closure JavaScriptРабота с классами Добавление классов или нескольких goog.dom.classes.add(element, 'className1', 'className2'); Удаление класса или нескольких goog.dom.classes.remove(element,'className1', 'className2'); 21
  • 22. Google Closure JavaScriptРабота с классами Переключение между классами goog.dom.classes.swap(element, 'fromClass', 'toClass'); Добавление и удаление классов за один подход goog.dom.classes.addRemove(element, 'addClass', ['removeClass']); 22
  • 23. Google Closure JavaScriptРабота с классами Добавление/удаление класса по флагу goog.dom.classes.enable(element, 'className', true||false); Если класс – удалить, если нет – добавить goog.dom.classes.toggle(element, 'className'); 23
  • 24. Google Closure JavaScriptРабота со стилями Подключение пакета goog.require('goog.style'); 24
  • 25. Google Closure JavaScriptРабота со стилями Получение значения атрибута goog.style.getStyle(element, 'border') ; установка значения goog.style.setStyle(element, 'border-color', 'red'); или goog.style.setStyle(element, {'padding-top': '5px', 'padding-bottom': '5px'}); 25
  • 26. Google Closure JavaScriptРабота со стилями Прозрачность и видимость элементов: Получение значения opacity goog.style.getOpacity(element); Установка значения opacity goog.style.setOpacity(element, .5); 26
  • 27. Google Closure JavaScriptРабота со стилями Прозрачность и видимость элементов:   Сокрытие элемента goog.style.showElement(element, false); и показ goog.style.showElement(element, true); 27
  • 28. Google Closure JavaScriptРабота с событиями Подключаем пакет goog.require('goog.events'); goog.require('goog.events.EventType'); 28
  • 29. Google Closure JavaScriptРабота с событиями Вешаем хендлер события на элемент: goog.events.listen(element, 'click', function(event){ … });   Вешаем одноразовый хендлер события на элемент: goog.events.listenOnce(element, 'click', function(event){ … }); 29
  • 30. Google Closure JavaScriptРабота с событиями Удаляем все обработчики с элемента goog.events.removeAll(element); Удаляем все обработчики со всего goog.events.removeAll(); 30
  • 31. Google Closure JavaScriptРабота с событиями Вызываем clickна другом объектес передачей текущего объекта-события (event) goog.events.listen(element, 'click', function(event){ goog.events.fireListeners(newElement, 'click',false, event); }); 31
  • 32. Google Closure JavaScriptРабота с событиями Вызываем clickна другом объектевчистую goog.events.listen(element, 'click', function(event){ goog.events.fireListeners(newElement, 'click',false, new goog.events.Event('click')); }); 32
  • 33. Проблемы c Google Closure JavaScriptи решения Issues Документация Проблемы «мобилизации» приложения Сложность упаковки проекта Порядок подключения пакетов Solutions Исходники, публикации Компиляция Компиляция Исходники 33
  • 34. jQuery jquery.js Mootools mootools-core.js Dojo Toolkit dojo.js Google Closure JS base.js Сравнение фреймворков с дополнениями 34
  • 35. Сравнение фреймворков jQuery jquery.js Mootools mootools-core.js Dojo Toolkit dojo.js Google Closure JS base.js с дополнениями 35
  • 36. Сравнение фреймворков jQuery jquery.js Mootools mootools-core.js Dojo Toolkit dojo.js Google Closure JS base.js с дополнениями 36
  • 37. Ссылки: Home: http://code.google.com/p/closure-library/ Downloads: http://code.google.com/p/closure-library/downloads/list API Documentation: http://closure-library.googlecode.com/svn/docs/index.html GoogleClosure руководство для начинающих: http://anton.shevchuk.name/javascript/google-closure-for-beginners-with-examples/ Контакты: Skype:vladfrandom Email: volodymyr_forfutdinov@epam.com Спасибо за внимание. Вопросы? 37