16:48

О JQuery

Мозг работы известного доктора.
Не могу не написать, вы уж простите.

Чтобы избежать попадания загрузки ваших скриптов в лаг между началом загрузки и активацией jquery.js, стоит, во-первых, использовать глобальный скрипт, который будет заниматься исключительно запуском других модулей, а во-вторых, использовать такую конструкцию:

$.getScript("path/to/sсriрt1.js", function(){
$.getScript("path/to/sсriрt2.js", function(){
$.getScript("path/to/sсriрt3.js", function(){});
});
});

Это означает: осуществлять загрузку JQuery-скриптов через getScript и инициализировать загрузку следующего скрипта в callback-функции предыдущего вызова.

Получается этакая матрешка, что, наверное, не очень хорошо, но другого метода избежать случайных ошибок (до 20% случаев в IE6, между прочим) при загрузке серии скриптов мне пока найти не удалось.

Вызов глобального скрипта, я думаю, лучше просто дописать в конец jquery.js.

Комментарии
14.05.2008 в 17:31

персифали и дукаты
в цитатник!
14.05.2008 в 17:36

Мозг работы известного доктора.
Buran, ))))

Виноват, признаю. Однако в этом посте есть необходимость.
14.05.2008 в 20:12

Get up on your surfboard!
ёпт.
Т.е. если у меня в страницу подгружается несколько js файлов и в разных файлов разные функции, то я рискую "недонайти" какую-то функцию, когда буду вызывать её близко (по времени) к событию onload?...
14.05.2008 в 21:35

Мозг работы известного доктора.
Tornn, ну попробуй сделать пару десятков рефрешей под IE6, если ошибка не выскакивает, то все нормально. )) На самом деле не факт, что если работать не с JQuery, то возникают такие проблемы.
15.05.2008 в 00:02

Все для ничто.
Жквери пакость. Предпочитаю чистый жаваскрипт.

Инициализация десятка модулей при загрузке странички подлагивает в опере - она все как-то многопоточно делает. Соответсвенно в ключевых местах приходится делать проверки наличия зависимого модуля и повторной инициализации текущего после загрузки зависимого.

Динамические js-инклюды только осложняют ситуацию.

ЗЫ центральный объект не спасает.
15.05.2008 в 01:52

Мозг работы известного доктора.
NEKT, помимо центрального объекта я еще говорю о callback-функциях. У меня проканало на ура, я даже не ожидал, и чуть было не разрыдался от счастья скупыми мужскими слезами.

Я считаю, чистый js смысла в природе не имеет. Это такая жесть, которая для человеческого мозга не приспособлена. Пусть на ней киборги кодят, а мои потребности в динамике JQuery в принципе удовлетворяет. Тем более, что JQuery не исключает использования javasсript, а просто весьма серьезно облегчает работу с js.
15.05.2008 в 10:18

Все для ничто.
я так и не понял выгоды жквери.

а как использовать каллбэки, если функции подключаются опционально, организуя приличное широкое дерево вариантов?
15.05.2008 в 10:27

Мозг работы известного доктора.
NEKT, это исключительно потому, что ты даже документацию (весьма нетолстую) по ней не прочитал. Самое главное - JQuery позволяет использовать в удобном синтаксисе едва ли не любые возможные селекторы, а кроме того делает элементарными самые необходимые простейшие действия (hide()/show(), ajax() и прочие).

Все зависимости - в матрешку. Почему бы и нет.

Кстати, она относительно кроссбраузерна.
29.05.2008 в 17:07

[metaphysical_style]
лучше дергать скрипты ajaxManager'ом (оч полезный плагин), настроив accept:sсriрt/javasсript и стековое поведение


но callback.....)))))))))
29.05.2008 в 17:11

Мозг работы известного доктора.
-SkyNet-, ну в конец скрипта пихать вызов следующего - это тоже беспонт, хотя я и пишу вызов глобального скрипта в конце jquery.js.

Посмотрим на ajaxManager.

А в чем проблема с callback?
29.05.2008 в 17:25

Все для ничто.
Ваши либы - бяка! :)

Вот у меня сделано что при подгрузке скрипта он регистрирует свои объекты и их зависимости в корневом объекте, что грузится и запускается самым первым. А дальше при попытке вызвать любой из модулей - тот проходит по своим зависимостям, проверяет их наличие, а при отсутствии наличия - загружает и запускает их.
29.05.2008 в 17:28

Мозг работы известного доктора.
NEKT, у тебя личная жизнь вообще есть? )))
29.05.2008 в 18:17

[metaphysical_style]
j-Walker проблему с callback ты описал в самом посте - довольно неказистая вложенная контсрукция получается, и манипулировать ей при желании не получится - только если прописывать вручную (как в посте)

как бы приемлемо, вариант рабочий, но не "комильфо", согласитесь ))

а если юзать очередь запросов (ajaxManager), то там уже добрые люди встроили событие готовности для получаемого контента
29.05.2008 в 18:24

[metaphysical_style]
NEKT ради интереса, поизучайте сайт jquery.com / docs.jquery.com - возможно, мнение изменится.

запакованная библиотека весит оч мало, потом можно же взять только ядро, и подключать доп модули по мере надобности

но обход с помощью селекторов, скажем 1000 объектов DOM сильно быстрее и проще

например, есть (не помню как зовут) плагин, подсвечивающий код хтмл, жс и прочий. там прилагаются забавная статистика по скорости работы

прикинуть сложно, как сделать также быстро на чистом жс
конечно, если обладать абсолютным знанием - то да, но jQuery - это не просто коллекция полезных объектов и функций!

для меня решающим стал фактор изначальной, "вшитой" кросс-браузерности (правда, для Оперы пришлось чуток пропатчить jquery.dimensions)

даже не принимая во внимания инструменты траверса и манипуляции DOM
30.05.2008 в 01:20

Все для ничто.
-SkyNet- у меня уже год опыта чистого жс :) На абсолютное знание я не претендую но статистику по скорости работы я уже снимаю на глаз равно как определяю штмльный код :)

Для меня в подобных либах интересны только идеи используемые в них для решения тех или иных задач.

j-Walker Нет. Зачем? :)
30.05.2008 в 10:23

Мозг работы известного доктора.
NEKT, ну если когда-нибудь захочешь освободить некоторое время для личной жизни, попробуй использовать либы. )
30.05.2008 в 14:33

[metaphysical_style]
j-Walker +1 )))))))))
30.05.2008 в 14:35

Мозг работы известного доктора.
-SkyNet-, а кроссбраузерность у JQuery относительная, если по-честному.
30.05.2008 в 15:25

[metaphysical_style]
j-Walker согласен, но как показывает практика, грамотное использование и понимание механизмов, в том числе используемых плагинов, эту кросс-браузерность не развращает.

то есть, загадить малину, несомненно, можно определенным подходом к решению какой-либо задачи, но также можно и не портить эту самую малину.
тут как раз тот самый случай, когда метод пробок и бутылок может заменить понимаение и опыт.

я, например, из не-кросс-браузерности, нашел только неверное определение высоты рабочего пространства браузера для Opera в jquery.dimensions
(у этого браузера свойство clientHeight нужно запрашивать у document.documentElement, а не document.body)

а остальные баги - в сторонних плагинах, причем довольно популярных, и как правило связаны с позиционированием родительских элементов относительно используемых плагином

з.ы. jquery копаю с января, уже оч много перелопатил
30.05.2008 в 15:36

Мозг работы известного доктора.
-SkyNet-, как насчет того, что IE5.1 вылетает с ошибкой при загрузке JQuery?
30.05.2008 в 16:21

[metaphysical_style]
j-Walker имхо, отсталым всегда было непросто в нашем суровом быстропрогрессирующем обществе, особенно когда имеется ввиду IT, и уж тем более www

а вообще, ''Everything should be unobtrusive; emphasize unobtrusiveness in everything'' (с)

это означает, что разработчик берет на себя ответственность за ошибки (в частности) от неспособного работать в этой среде браузера, будь то в зависимости от версии, или же от выключенной обработки скриптов сценария как таковых.

ярким примером является манера создания сайта, когда по флагу <no sсript> либо <no jQuery> человек получает привычный "веб 1.0" с сылками, иначе же активированная оснастка "облагораживает" сайт ajax-переходами и эмуляцией истории

это к примеру.