Стоит ли делать так ??? ( Javascript include)
От: Den777 Россия http://den777.gorodok.net
Дата: 21.03.03 11:22
Оценка:
Дело вот в чем: на страницах сайта есть повторяющиеся куски HTML кода, естественно не хочется все это копировать на каждую страницу...
Тут я вижу два выхода:
1)Использовать серверный скрипт ( напр. include в PHP). Но тогда куски кода будут каждый раз пересылаться по сети...
2)Использовать JavaScript т.е. написать что нибудь типа <script src="template.js">
А в файле "template.js"
.........
document.write("повторяющийся кусок текста");
........
Тогда этот файл закэшируется в первый раз и следующие страницы будут грузиться быстрее...

Какой вариант мне предпочесть ?????? Почему????
Re: Стоит ли делать так ??? ( Javascript include)
От: mikkri Великобритания  
Дата: 21.03.03 11:31
Оценка:
Здравствуйте, Den777, Вы писали:

У меня на сайте клиенту грузиться скрипт, который формирует header'ы и footer'ы на всех не основных страницах. Работает.
Правда хостинг другого варианта не предлагает без ручного копирования кода всюду
Re: Стоит ли делать так ??? ( Javascript include)
От: DSD Россия http://911.ru/cv
Дата: 21.03.03 11:36
Оценка:
Здравствуйте, Den777, Вы писали:

D>2)Использовать JavaScript т.е. написать что нибудь типа <script src="template.js">

D>А в файле "template.js"
D>.........
D>document.write("повторяющийся кусок текста");
D>........
D>Тогда этот файл закэшируется в первый раз и следующие страницы будут грузиться быстрее...

D>Какой вариант мне предпочесть ?????? Почему????

Ну и пуркуа бы и не па?
Вполне замечательная идея, ИМХО. Недостатков не вижу, во всяком случае тех, из-за которых стоило бы отказаться...
Сам я давно практикую подгрузку большинства кода при входе на сайт один раз — и на всю сессию. Выглядит правда, посложней, чем это(да и код там посложней), но тем не менее это очень удобно.
--
DSD
Re[2]: Стоит ли делать так ??? ( Javascript include)
От: mikkri Великобритания  
Дата: 21.03.03 11:38
Оценка:
Здравствуйте, DSD, Вы писали:

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


А можно поподробнее?
Re[3]: Стоит ли делать так ??? ( Javascript include)
От: DSD Россия http://911.ru/cv
Дата: 21.03.03 11:46
Оценка:
Здравствуйте, mikkri, Вы писали:

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

M>А можно поподробнее?
Что именно? Мою загрузку кода? Если не влом разбираться самому, тогда вперед: http://911.ru/newintf
(сам сайт еще не готов(это делается новая версия, пока еще разрабатывается серверная сторона), но механизм загрузки интерфейса и JS-API реализован в полной мере.)
--
DSD
Re[4]: Стоит ли делать так ??? ( Javascript include)
От: Den777 Россия http://den777.gorodok.net
Дата: 21.03.03 12:05
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, mikkri, Вы писали:


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

M>>А можно поподробнее?
DSD>Что именно? Мою загрузку кода? Если не влом разбираться самому, тогда вперед: http://911.ru/newintf
DSD>(сам сайт еще не готов(это делается новая версия, пока еще разрабатывается серверная сторона), но механизм загрузки интерфейса и JS-API реализован в полной мере.)

Хммм... В Опере http://911.ru/newintf не работает ( у меня седьмая версия). Хотя устроено оригинально....
А если влом самому разбираться ???

Я еще забыл сказать. Сайт рассчитан на то, что админиить его буду не один только я. Т.е нужно что-нибудь достаочно простое (пусть даже не очень многофункциональное ) и удобное для быстрой смены дизайна... Идеальный вариант был бы XML с PHP вставками...если бы не надо было парсер писать...
Re[4]: Стоит ли делать так ??? ( Javascript include)
От: mikkri Великобритания  
Дата: 21.03.03 12:11
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, mikkri, Вы писали:


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

M>>А можно поподробнее?
DSD>Что именно? Мою загрузку кода? Если не влом разбираться самому, тогда вперед: http://911.ru/newintf
DSD>(сам сайт еще не готов(это делается новая версия, пока еще разрабатывается серверная сторона), но механизм загрузки интерфейса и JS-API реализован в полной мере.)

Ты скрипты загружаешь в глобавльные переменные и держишь пользователя на одной странице? Или все же их куда-то на его машине записываешь??? Но тогда куда?
Re[5]: Стоит ли делать так ??? ( Javascript include)
От: DSD Россия http://911.ru/cv
Дата: 21.03.03 13:28
Оценка:
Здравствуйте, Den777, Вы писали:


D>Хммм... В Опере http://911.ru/newintf не работает ( у меня седьмая версия). Хотя устроено оригинально....

А он под оперу и не рассчитан IE 4+ only.

D>Я еще забыл сказать. Сайт рассчитан на то, что админиить его буду не один только я. Т.е нужно что-нибудь достаочно простое (пусть даже не очень многофункциональное ) и удобное для быстрой смены дизайна... Идеальный вариант был бы XML с PHP вставками...если бы не надо было парсер писать...

Ну так то, что ты вначале сам предложил, тебе вполне подойдет, а уж по необходимости сам будешь усложнять свой код загрузки...
--
DSD
Re[5]: Стоит ли делать так ??? ( Javascript include)
От: DSD Россия http://911.ru/cv
Дата: 21.03.03 13:34
Оценка: 6 (1)
Здравствуйте, mikkri, Вы писали:

M>Ты скрипты загружаешь в глобавльные переменные и держишь пользователя на одной странице? Или все же их куда-то на его машине записываешь??? Но тогда куда?

В общем-то там только одна глобальная переменная, которая является почти полиморфным(самокопирующимся) обьектом с довольно сложной структурой.
Именно этот обьект и содержит в себе и API, и логику, и куски интерфейса. Пользователь действительно фактически находится на одной странице все время.
Но ничего не стоит перевести его на другую страницу, в нужный момент "самоскопировав" в нее этот основной обьект.
После загрузки обьект с сервером обменивается только полезными данными, интерфейс генерится на лету. При необходимости части интерфейса можно подгружать с сервера... короче довольно здоровски все получилось, я сам не ожидал вначале такого результата
--
DSD
Re[6]: Стоит ли делать так ??? ( Javascript include)
От: Den777 Россия http://den777.gorodok.net
Дата: 21.03.03 18:32
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, mikkri, Вы писали:


M>>Ты скрипты загружаешь в глобавльные переменные и держишь пользователя на одной странице? Или все же их куда-то на его машине записываешь??? Но тогда куда?

DSD>В общем-то там только одна глобальная переменная, которая является почти полиморфным(самокопирующимся) обьектом с довольно сложной структурой.
DSD>Именно этот обьект и содержит в себе и API, и логику, и куски интерфейса. Пользователь действительно фактически находится на одной странице все время.
DSD>Но ничего не стоит перевести его на другую страницу, в нужный момент "самоскопировав" в нее этот основной обьект.
DSD>После загрузки обьект с сервером обменивается только полезными данными, интерфейс генерится на лету. При необходимости части интерфейса можно подгружать с сервера... короче довольно здоровски все получилось, я сам не ожидал вначале такого результата

А можно поподробнее?? Что значит "самоскопировать"???
И каким образом происходит обмен с сервером данными ??? Через невидимый фрейм ???
Кстати по-моему примерно то же самое можно сотворить с помощью XML и DOM — полегче и побыстрее будет, но только для IE 5+, я не ошибаюсь ??
Re[7]: Стоит ли делать так ??? ( Javascript include)
От: DSD Россия http://911.ru/cv
Дата: 22.03.03 05:08
Оценка:
Здравствуйте, Den777, Вы писали:

D>А можно поподробнее?? Что значит "самоскопировать"???

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

Обьясню на примере, что это такое:
К примеру, у тебя есть массив my_arr.
Если ты напишешь my_arr2=my_arr, то my_arr2 не будет дубликатом массива my_arr, но будет ссылкой на него.
Если эти два массива просты, как например, массив строк, то их можно сдублировать следующим образом:
my_arr2 = my_arr.join(":").split(":"); (при условии, что символ ":" внутри строк массива не встречается)
Но массивы могут быть и более сложной структуры: иметь подмассивы, каждый элемент может ссылаться на разнородные обьекты, и т.п.
То есть некоторые вещи в JS присваиваются по ссылке, а некоторые по значению.
Вот мой обьект и поддерживает полное самодублирование.

Пример 2:
предположим у тебя есть функция foo().
ты создаешь новое окно _win=window.open(...)
а потом пишешь: _win.foo = foo; (т.е. делаешь в новом окне такую же глобальную функцию)
На самом деле _win.foo() будет ссылкой на foo() в текущем окне, и если ты закроешь первое окно, во втором эта функция уже не будет работать, поскольку потеряет свое тело.
Мой обьект и это тоже поддерживает, т.е. дублирует тела собственных функций в новое место.


D>И каким образом происходит обмен с сервером данными ??? Через невидимый фрейм ???

Да.
Этих фреймов может быть несколько.
Они могут быть keep-alive.(неразрывное постоянное соединение)

D>Кстати по-моему примерно то же самое можно сотворить с помощью XML и DOM — полегче и побыстрее будет, но только для IE 5+, я не ошибаюсь ??

Насчет IE5+ может и не ошибаешься, но насчет полегче и побыстрей — ошибаешься явно. XML тормозит серверную часть, а DOM — клиентскую.
Сам Майкрософт в статьях по оптимизации говорит, что DOM тормозит, и советуют там, где можно, стараться ним не пользоваться.
Да ты и сам можешь это проверить: попробуй скажем в <select> добавить пару тысяч опций через DOM и другими, старыми методами, и замерь при этом время выполнения.
ИМХО, быстрей всего будет работать нечто подобное:
function genComboItems(_obj, _count) {
   var i=0;
   var _arr = new Array(_count);
   _obj.length=0;
   for (i=0;i<_count;i++) _arr[i]="<option value='"+i+"'>"+i+"</option>";
   _obj.innerHTML = _arr.join("");
   _obj.selectedIndex=0;
   _obj.defaultSelected=_obj.selectedIndex;
}
genComboItems(document.all.my_select, 10000);
--
DSD
Re[8]: Стоит ли делать так ??? ( Javascript include)
От: Den777 Россия http://den777.gorodok.net
Дата: 24.03.03 06:25
Оценка:
Спасибо, все стало яснее...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.