В старых проектах я загружал все пользовательский код jquery в один документ. Уже в одном файле на каждой странице (прост в обслуживании, но много ненужных селекторов на странице) Я начал думать (а), что это грязное программирование, и (б) это, должно быть, плохая производительность, поэтому я начал проводить некоторые исследования.
Я в основном хотел один файл js, но хотел загружать / обслуживать только те запросы / селекторы / функции, которые были необходимы для этой страницы.
Я встречал 2 варианта:
- http://www.artzstudio.com/2009/04/jquery-performance-rules/#eliminate-query-waste
(вызов скрипта внизу страницы над закрывающим тегом тела
mylib.article.init();
global.js
var mylib =
{
article_page :
{
init : function()
{
// Article page specific jQuery functions.
}
},
traffic_light :
{
init : function()
{
// Traffic light specific jQuery functions.
}
}
}
2. http://jonraasch.com/blog/5-performance-tuning-tricks-for-jquery
Предположим, что в некоторых частях сайта мы хотим свернуть элементы боковой навигации при загрузке страницы:
$(document).ready(function() {
$('#sideNav LI:not(#current)').hide();
});
Несмотря на то, что некоторые страницы не имеют боковой навигации, это не приведет к ошибке в любом браузере, но давайте все же убедимся, что функция скрытия выполняется только тогда, когда это необходимо:
$(document).ready(function() {
var sideNavPages = ['catalog', 'order', 'contact'];
if ( jQuery.inArray(thisPage, sideNavPages) != -1 ) {
$('#sideNav LI:not(#current)').hide();
}
});
Какой из 2 выше лучше? Есть ли третий, еще лучший вариант?
Хорошо бы знать, что думают люди.
Adi.