SlideShare a Scribd company logo
Быстрая разработка  веб-интерфейсов на  JavaScript Георгий Калашников Заседание  #000012
Зачем это и с чего всё началось? Сложность непосредственной работы с  DOM Избыточность классического  JS- кода Кроссбраузерность
Holly Wars Prototype/Scriptaculous  (> 200Kb) Mootools Dojo
jQuery 54.5 KB  [15KB   packed] CSS 1-3  и немного  XPath   IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+ Огромное сообщество Доступная документация Лёгкая расширяемость (1441   плагин)
$ $( селектор,  [ контекст ]) $(HTML) $(document | window | form) $(function)
$(document).ready() <sctipt type=“text/javascript”> window.onload = myOnloadHandler; </script> $(document). ready (myInitFunction); function myInitFunction()  { $(“body”). append( $(“<h1>Hi, folks!</h1>”) ); } MyScript.js <script type=“text/javascript” src=“MyScript.js”></script>
Селекторы #id  tag .class *  selector1, selector2, …, selectorN предок потомок отец  >  сын пред  +  след пред  ~  все след [ атрибут ] [ атрибут = значение ] [ атрибут !=  | *= | ^= | $=  значение ] [][]…[][]
[ Селектор ] : фильтр :first  /last :not( селектор ) :even  /odd :eq(ind)  /gt /lt/   :header :contains( текст ) :empty  лист :hidden  /visible :input :text :button :enabled :checked  :selected :contains( текст ) :empty …
Ещё раз о  $ eq( index ) filter (  выражение  | function ) slice ( from, [to] ) get( index ) length OMG это массив!
Цепные вызовы  — chaining $(“div”). children(). hide(). end() . addClass(“c”);
Долой унылые методы манипуляции с  DOM ! html ( )  html ( val ) text ( )  text ( val )  append ( content )  appendTo ( selector )  prepend ( content )  prependTo ( selector )  after ( content )  before ( content )  insertAfter ( content )   insertBefore ( content )  replaceWith ( content )  replaceAll ( selector ) empty ( )  remove ( expr )  wrap ( html | elem )  wrapAll ( html | elem ) wrapInner ( html | elem ) clone ( [true] )
картинка для привлечения внимания
События bind( type, data, fn )  one( type, data, fn )  trigger( type, data )  triggerHandler( type, data )  unbind( type, fn )
События   ->   плюшки!  hover ( over, out ) toggle ( [fn1,  fn2, …, fnN] ) click ( [fn] ) dbclick ( [fn] ) resize ( fn ) mouseover ( fn ) keypress ( [fn] ) blur( fn ) change( fn ) error( fn ) focus( ) focus( fn ) keydown( fn ) keypress( fn ) keyup( fn ) load( fn ) mousedown( fn ) mousemove( fn ) mouseout( fn ) mouseover( fn )  mouseup( fn ) resize( fn ) scroll( fn ) select( fn ) submit( fn ) unload( fn )
События   ->  preventDefault $(“a”). click ( myClickHandler ); function myClickHandler   (   event   ) { //  Перехода по ссылке   не будет event.preventDefault(); $( this ) . hide(); }
$.ajax();
АЙ-АЙ $.ajax ( {  } ) .load ( url, [data], [callback]) $.get ( url, [data], [callback], [type]) $.getJSON( url, [data], [callback]) $.post( url, [data], [callback], [type]) +  события  ajaxError ( callback )
Эффекты и анимация  show / hide ( [speed], [callback] ) toggle () slideUp /slideDown /slideToggle (speed, [clbk]) fadeIn / fadeOut(s, [cb]) / fadeTo(s, o, [cb]) animate() stop() queue() / dequeue()
Plugins  -> свой плагин (   function($) {  $.   fn.  myPlugin  = function()  {  return this.each(function() {  /*  Пыщ! */   });  };  })(jQuery); Пример гов плохого кода
Plugins  -> свой плагин  2 (function($) { $.fn.myPlugin = myPlugin;   })(jQuery); function myPlugin($) {  return this.each(myPluginWithEach);  } function myPluginWithEach() { $(this).hide(); }
Plugins  -> готовенькое http://plugins.jquery.com/ http://bassistance.de/jquery-plugins/ http://ui.jquery.com/
Ссылки http://jquery.com/ http://visualjquery.com/ http://learningjquery.com/
Да прибудет с вами сила  jQuery ! [email_address]

More Related Content

PPTX
I tmozg js_school
PDF
Перевод базы Caché из 8 бит в Unicode
PDF
Quick introduction jQuery
PDF
PPT
Подробная презентация JavaScript 6 в 1
PPT
Web весна 2012 лекция 4
PPT
Javascript
PPTX
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
I tmozg js_school
Перевод базы Caché из 8 бит в Unicode
Quick introduction jQuery
Подробная презентация JavaScript 6 в 1
Web весна 2012 лекция 4
Javascript
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...

What's hot (14)

PDF
Михаил Давыдов — JavaScript: Асинхронность
PPSX
создание HTML игр на элементе canvas
PPT
Web осень 2012 лекция 4
PPTX
Groovy и Grails. Быстро и обо всём
PPTX
I tmozg js_school_jquery
PDF
Как писать под Android программы, а не код
PPTX
Documents in JavaScript
PDF
Перспективы функционального подхода
PDF
Асинхронный JavaScript
PDF
Making Scalable JavaScript Application
PDF
Встраивание языка в строковой интерполятор
PDF
msumobi2. Лекция 2
PDF
Написание DSL в Perl
PDF
Mongo db aggregation
Михаил Давыдов — JavaScript: Асинхронность
создание HTML игр на элементе canvas
Web осень 2012 лекция 4
Groovy и Grails. Быстро и обо всём
I tmozg js_school_jquery
Как писать под Android программы, а не код
Documents in JavaScript
Перспективы функционального подхода
Асинхронный JavaScript
Making Scalable JavaScript Application
Встраивание языка в строковой интерполятор
msumobi2. Лекция 2
Написание DSL в Perl
Mongo db aggregation
Ad

Similar to jQuery: быстрая разработка веб-интерфейсов на JavaScript (20)

PPTX
course js day 4
PDF
Jsfwdays 2013-2
PDF
FPUG Dzyga presentation
PPT
Web весна 2013 лекция 10
PPT
Web осень 2012 лекция 9
PDF
JavaScript Базовый. Занятие 11.
PPTX
XSS. Обходы фильтров и защит.
PPT
Web осень 2012 лекция 10
PPT
Профилирования и оптимизация jQuery-кода
PPT
Профилирование и оптимизация jQuery–кода
PPT
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
PPTX
jQuery для ASP.NET разработчиков
PPTX
SECON'2016. Иовлев Роман, JDI is UI Automation Future
PPT
Web весна 2012 лекция 9
PPT
Подробная презентация JavaScript 6 в 1
PPTX
iOS and Android Mobile Test Automation
PDF
YiiConf: Миграции и инсталляции
PDF
Yii: миграции и инсталляции
PDF
Mobile automation uamobile
PDF
«Custom View. Делаем быстро, красиво, чисто». Илья Демидов
course js day 4
Jsfwdays 2013-2
FPUG Dzyga presentation
Web весна 2013 лекция 10
Web осень 2012 лекция 9
JavaScript Базовый. Занятие 11.
XSS. Обходы фильтров и защит.
Web осень 2012 лекция 10
Профилирования и оптимизация jQuery-кода
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
jQuery для ASP.NET разработчиков
SECON'2016. Иовлев Роман, JDI is UI Automation Future
Web весна 2012 лекция 9
Подробная презентация JavaScript 6 в 1
iOS and Android Mobile Test Automation
YiiConf: Миграции и инсталляции
Yii: миграции и инсталляции
Mobile automation uamobile
«Custom View. Делаем быстро, красиво, чисто». Илья Демидов
Ad

More from Constantin Kichinsky (20)

PPTX
Brain to brain communications
PPTX
Прототипирование приложений в Expression Blend + Sketchflow
PPTX
JavaScript OOP
PPT
Пользовательский интерфейс
PPT
Архитектура корпоративных систем
PPT
Шаблоны проектирования 2
PPT
Шаблоны проектирования 1
PPT
Обработка ошибок
PPT
Создание новых объектов
PPT
Декомпозиция
PDF
Design Lecture
PDF
Оптимизация SQL
PPT
Django – фреймворк, который работает
PPT
Ruby On Rails: Web-разработка по-другому!
PDF
Silverlight 2
PPT
Управление проектами
PDF
Silverlight 2
PPT
Код как низкоуровневая документация
PDF
PDF
Ajax и будущее Java Script
Brain to brain communications
Прототипирование приложений в Expression Blend + Sketchflow
JavaScript OOP
Пользовательский интерфейс
Архитектура корпоративных систем
Шаблоны проектирования 2
Шаблоны проектирования 1
Обработка ошибок
Создание новых объектов
Декомпозиция
Design Lecture
Оптимизация SQL
Django – фреймворк, который работает
Ruby On Rails: Web-разработка по-другому!
Silverlight 2
Управление проектами
Silverlight 2
Код как низкоуровневая документация
Ajax и будущее Java Script

jQuery: быстрая разработка веб-интерфейсов на JavaScript

  • 1. Быстрая разработка веб-интерфейсов на JavaScript Георгий Калашников Заседание #000012
  • 2. Зачем это и с чего всё началось? Сложность непосредственной работы с DOM Избыточность классического JS- кода Кроссбраузерность
  • 3. Holly Wars Prototype/Scriptaculous (> 200Kb) Mootools Dojo
  • 4. jQuery 54.5 KB [15KB packed] CSS 1-3 и немного XPath IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+ Огромное сообщество Доступная документация Лёгкая расширяемость (1441 плагин)
  • 5. $ $( селектор, [ контекст ]) $(HTML) $(document | window | form) $(function)
  • 6. $(document).ready() <sctipt type=“text/javascript”> window.onload = myOnloadHandler; </script> $(document). ready (myInitFunction); function myInitFunction() { $(“body”). append( $(“<h1>Hi, folks!</h1>”) ); } MyScript.js <script type=“text/javascript” src=“MyScript.js”></script>
  • 7. Селекторы #id tag .class * selector1, selector2, …, selectorN предок потомок отец > сын пред + след пред ~ все след [ атрибут ] [ атрибут = значение ] [ атрибут != | *= | ^= | $= значение ] [][]…[][]
  • 8. [ Селектор ] : фильтр :first /last :not( селектор ) :even /odd :eq(ind) /gt /lt/ :header :contains( текст ) :empty лист :hidden /visible :input :text :button :enabled :checked :selected :contains( текст ) :empty …
  • 9. Ещё раз о $ eq( index ) filter ( выражение | function ) slice ( from, [to] ) get( index ) length OMG это массив!
  • 10. Цепные вызовы — chaining $(“div”). children(). hide(). end() . addClass(“c”);
  • 11. Долой унылые методы манипуляции с DOM ! html ( ) html ( val ) text ( ) text ( val ) append ( content ) appendTo ( selector ) prepend ( content ) prependTo ( selector ) after ( content ) before ( content ) insertAfter ( content ) insertBefore ( content ) replaceWith ( content ) replaceAll ( selector ) empty ( ) remove ( expr ) wrap ( html | elem ) wrapAll ( html | elem ) wrapInner ( html | elem ) clone ( [true] )
  • 13. События bind( type, data, fn ) one( type, data, fn ) trigger( type, data ) triggerHandler( type, data ) unbind( type, fn )
  • 14. События -> плюшки! hover ( over, out ) toggle ( [fn1, fn2, …, fnN] ) click ( [fn] ) dbclick ( [fn] ) resize ( fn ) mouseover ( fn ) keypress ( [fn] ) blur( fn ) change( fn ) error( fn ) focus( ) focus( fn ) keydown( fn ) keypress( fn ) keyup( fn ) load( fn ) mousedown( fn ) mousemove( fn ) mouseout( fn ) mouseover( fn ) mouseup( fn ) resize( fn ) scroll( fn ) select( fn ) submit( fn ) unload( fn )
  • 15. События -> preventDefault $(“a”). click ( myClickHandler ); function myClickHandler ( event ) { // Перехода по ссылке не будет event.preventDefault(); $( this ) . hide(); }
  • 17. АЙ-АЙ $.ajax ( { } ) .load ( url, [data], [callback]) $.get ( url, [data], [callback], [type]) $.getJSON( url, [data], [callback]) $.post( url, [data], [callback], [type]) + события ajaxError ( callback )
  • 18. Эффекты и анимация show / hide ( [speed], [callback] ) toggle () slideUp /slideDown /slideToggle (speed, [clbk]) fadeIn / fadeOut(s, [cb]) / fadeTo(s, o, [cb]) animate() stop() queue() / dequeue()
  • 19. Plugins -> свой плагин ( function($) { $. fn. myPlugin = function() { return this.each(function() { /* Пыщ! */ }); }; })(jQuery); Пример гов плохого кода
  • 20. Plugins -> свой плагин 2 (function($) { $.fn.myPlugin = myPlugin; })(jQuery); function myPlugin($) { return this.each(myPluginWithEach); } function myPluginWithEach() { $(this).hide(); }
  • 21. Plugins -> готовенькое http://plugins.jquery.com/ http://bassistance.de/jquery-plugins/ http://ui.jquery.com/
  • 23. Да прибудет с вами сила jQuery ! [email_address]