Мозг работы известного доктора.
Не могу не написать, вы уж простите.
Чтобы избежать попадания загрузки ваших скриптов в лаг между началом загрузки и активацией 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.
Чтобы избежать попадания загрузки ваших скриптов в лаг между началом загрузки и активацией 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.
Виноват, признаю. Однако в этом посте есть необходимость.
Т.е. если у меня в страницу подгружается несколько js файлов и в разных файлов разные функции, то я рискую "недонайти" какую-то функцию, когда буду вызывать её близко (по времени) к событию onload?...
Инициализация десятка модулей при загрузке странички подлагивает в опере - она все как-то многопоточно делает. Соответсвенно в ключевых местах приходится делать проверки наличия зависимого модуля и повторной инициализации текущего после загрузки зависимого.
Динамические js-инклюды только осложняют ситуацию.
ЗЫ центральный объект не спасает.
Я считаю, чистый js смысла в природе не имеет. Это такая жесть, которая для человеческого мозга не приспособлена. Пусть на ней киборги кодят, а мои потребности в динамике JQuery в принципе удовлетворяет. Тем более, что JQuery не исключает использования javasсript, а просто весьма серьезно облегчает работу с js.
а как использовать каллбэки, если функции подключаются опционально, организуя приличное широкое дерево вариантов?
Все зависимости - в матрешку. Почему бы и нет.
Кстати, она относительно кроссбраузерна.
но callback.....)))))))))
Посмотрим на ajaxManager.
А в чем проблема с callback?
Вот у меня сделано что при подгрузке скрипта он регистрирует свои объекты и их зависимости в корневом объекте, что грузится и запускается самым первым. А дальше при попытке вызвать любой из модулей - тот проходит по своим зависимостям, проверяет их наличие, а при отсутствии наличия - загружает и запускает их.
как бы приемлемо, вариант рабочий, но не "комильфо", согласитесь ))
а если юзать очередь запросов (ajaxManager), то там уже добрые люди встроили событие готовности для получаемого контента
запакованная библиотека весит оч мало, потом можно же взять только ядро, и подключать доп модули по мере надобности
но обход с помощью селекторов, скажем 1000 объектов DOM сильно быстрее и проще
например, есть (не помню как зовут) плагин, подсвечивающий код хтмл, жс и прочий. там прилагаются забавная статистика по скорости работы
прикинуть сложно, как сделать также быстро на чистом жс
конечно, если обладать абсолютным знанием - то да, но jQuery - это не просто коллекция полезных объектов и функций!
для меня решающим стал фактор изначальной, "вшитой" кросс-браузерности (правда, для Оперы пришлось чуток пропатчить jquery.dimensions)
даже не принимая во внимания инструменты траверса и манипуляции DOM
Для меня в подобных либах интересны только идеи используемые в них для решения тех или иных задач.
j-Walker Нет. Зачем?
то есть, загадить малину, несомненно, можно определенным подходом к решению какой-либо задачи, но также можно и не портить эту самую малину.
тут как раз тот самый случай, когда метод пробок и бутылок может заменить понимаение и опыт.
я, например, из не-кросс-браузерности, нашел только неверное определение высоты рабочего пространства браузера для Opera в jquery.dimensions
(у этого браузера свойство clientHeight нужно запрашивать у document.documentElement, а не document.body)
а остальные баги - в сторонних плагинах, причем довольно популярных, и как правило связаны с позиционированием родительских элементов относительно используемых плагином
з.ы. jquery копаю с января, уже оч много перелопатил
а вообще, ''Everything should be unobtrusive; emphasize unobtrusiveness in everything'' (с)
это означает, что разработчик берет на себя ответственность за ошибки (в частности) от неспособного работать в этой среде браузера, будь то в зависимости от версии, или же от выключенной обработки скриптов сценария как таковых.
ярким примером является манера создания сайта, когда по флагу <no sсript> либо <no jQuery> человек получает привычный "веб 1.0" с сылками, иначе же активированная оснастка "облагораживает" сайт ajax-переходами и эмуляцией истории
это к примеру.