SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - DatabaseNoveo
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадSQALab
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Denis Tsvettsih
 
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYYMail.ru Group
 
Клиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхКлиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхKirill Zotin
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.Igor Shkulipa
 
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
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Fedor Malyshkin
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Denis Tsvettsih
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETDev2Dev
 
Модульная структура
Модульная структураМодульная структура
Модульная структураDenis Tsvettsih
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016Anastasia Goryacheva
 
Как приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложенияхКак приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложенияхDenis Tsvettsih
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSPUnguryan Vitaliy
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with SeleniumSergey Shvets
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETDev2Dev
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 

What's hot (20)

Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - Database
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
 
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYY
 
Обзор возможностей HTML5
Обзор возможностей HTML5Обзор возможностей HTML5
Обзор возможностей HTML5
 
Клиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхКлиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталях
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.
 
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
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
 
Silverlight 5
Silverlight 5Silverlight 5
Silverlight 5
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Модульная структура
Модульная структураМодульная структура
Модульная структура
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 
Как приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложенияхКак приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложениях
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 

Viewers also liked

Open socializeyourapp
Open socializeyourappOpen socializeyourapp
Open socializeyourappYova Stoika
 
Expanded Interface Pres
Expanded Interface PresExpanded Interface Pres
Expanded Interface Preskonkon101
 
OuiShare - Sharing Economy - South American Business Forum
OuiShare - Sharing Economy - South American Business ForumOuiShare - Sharing Economy - South American Business Forum
OuiShare - Sharing Economy - South American Business ForumDavid Sucar
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проектаYova Stoika
 

Viewers also liked (8)

Hybrid cloud
Hybrid cloudHybrid cloud
Hybrid cloud
 
Green economy cassandras
Green economy cassandrasGreen economy cassandras
Green economy cassandras
 
Open socializeyourapp
Open socializeyourappOpen socializeyourapp
Open socializeyourapp
 
Eislideshow
EislideshowEislideshow
Eislideshow
 
Expanded Interface Pres
Expanded Interface PresExpanded Interface Pres
Expanded Interface Pres
 
OuiShare - Sharing Economy - South American Business Forum
OuiShare - Sharing Economy - South American Business ForumOuiShare - Sharing Economy - South American Business Forum
OuiShare - Sharing Economy - South American Business Forum
 
Green energy bubbles
Green energy bubblesGreen energy bubbles
Green energy bubbles
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проекта
 

Similar to библиотека 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
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 
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
 
Serge P Nekoval Grails
Serge P  Nekoval GrailsSerge P  Nekoval Grails
Serge P Nekoval Grailsrit2010
 
Grails. Поиски закончены.
Grails. Поиски закончены.Grails. Поиски закончены.
Grails. Поиски закончены.nekoval
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupalCamp Kyiv Рысь
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкRoman Dvornov
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptAlexey Ivanov
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Dev_Party
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеYandex
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в DjangoMoscowDjango
 

Similar to библиотека 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
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 
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
 
Serge P Nekoval Grails
Serge P  Nekoval GrailsSerge P  Nekoval Grails
Serge P Nekoval Grails
 
Grails. Поиски закончены.
Grails. Поиски закончены.Grails. Поиски закончены.
Grails. Поиски закончены.
 
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
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
 
Javascript
JavascriptJavascript
Javascript
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в Django
 

библиотека 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