Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 21.01.2012, 11:29
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от da_ff Посмотреть сообщение
melky,
Стоп, кажется мы немного про разные вещи говорим. Речь вроде бы про шаблонизаторы на серверной стороне. Шаблонизатор bмеет свою грамматику для вывода простых конструкций логигки (ветвление, цикл, вывод другого шаблона и тд).Чтобы срендерить кусок html шаблонизатору нужнем экземпляр модели с данными. В модели как правило есть коллекция (массив/хэш) ссылок и тайтлов пунктов меню (если упрощенно и только плоский список). У нас есть выбор, либо собрать из этого ul и на этом успокоиться, либо собрать конструкцию
<javascript>
(function () {
var _ = [коллекция_пунктов_меню];
document.write(renderMenu(_));
})();
</javascript>
В чем тут выигрыш в производительности? В любом случае нам нужна модель с данными, которая будет получена только на сервере и больше ни где.
циклы для вывода не использются. ты просто выводишь массив, а не обходишь его и расставляешь хитрые классы, атрибуты. вот в этом и выигрыш.
см. хабру
Цитата:
И почему же мы все не кидаемся вовсю использовать шаблонизацию на стороне клиента?
– генерировать страницу (бОльшую её часть) становится таки уже накладно;
– если у вас используется смешанная шаблонизация (шаблоны и на javascript, и на вашем любимом скриптовом языке), то возникнет ситуация, когда они у вас дублируются;
я говорил вам о первом пункте.

Сообщение от trikadin Посмотреть сообщение
Куча утечек памяти, и
мм?
Сообщение от trikadin Посмотреть сообщение
firebug постоянно пестрит сообщениями об ошибках.
согласен, но предупреждения у jquery видел?)
Ответить с цитированием
  #22 (permalink)  
Старый 21.01.2012, 11:32
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Цитата:
циклы для вывода не использются. ты просто выводишь массив
Как это? Коллекцию нам все равно надо будет обойти, только это будет скрыто от нас за синтаксисом языка.
Ответить с цитированием
  #23 (permalink)  
Старый 21.01.2012, 11:46
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от da_ff Посмотреть сообщение
Как это? Коллекцию нам все равно надо будет обойти, только это будет скрыто от нас за синтаксисом языка.
её выводит уже сам пользователь.

ЗЫ что-то мне кажется, что делать так - дело вкуса, не более. ощутимых минусов и плюсов нет. мне просто нравится заменять JS'oм всё, что вижу. если бы смог написать комбайнер - он был бы сейчас готов
Ответить с цитированием
  #24 (permalink)  
Старый 21.01.2012, 11:54
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от melky
мм?
Открой вкладку на пару часов и посмотри на расход памяти. Где конкретно утечки происходят - сказать не могу, в код не смотрел))
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #25 (permalink)  
Старый 21.01.2012, 11:56
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от trikadin Посмотреть сообщение
Открой вкладку на пару часов и посмотри на расход памяти. Где конкретно утечки происходят - сказать не могу, в код не смотрел))
там json раз в секунду принимается. вспомни, как кто-то жаловался на это (но не вконтакте)

хм. действительно, странная проблема.
Ответить с цитированием
  #26 (permalink)  
Старый 21.01.2012, 12:02
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от melky
там json раз в секунду принимается.
Реже. Для стен - раз в десять, точно помню. Для сообщений они по-моему вообще long соединение держат. Хотя это не важно, по сути)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #27 (permalink)  
Старый 21.01.2012, 19:41
Аспирант
Отправить личное сообщение для d-kaktus Посмотреть профиль Найти все сообщения от d-kaktus
 
Регистрация: 05.01.2012
Сообщений: 38

Сообщение от trikadin Посмотреть сообщение
Как люди всё-таки не любят критику и любят нравиться)
А почему я должен любить то, что мне неприемлемо (это не касательно данной теме)?
Короче говоря, куча доводов и только один факт, к которому можно найти подход - поисковики. (сюда же и отключенный js можно отнести)
Я открыл главную страницу мэйл.ру - мне не впадлу стало подсчитать количество div`ов - 266. При чём это количество можно разбить на несколько групп с одинаковым классом. Меня посещает отличная идея - почему бы не озадачить js подобным образом:
function div(id,class,text){
   return "<div id='"+id+"' class='"+class+"'>"+text+"</div>";
}
var i,divs=['<?=implode("','",$someLongArray)?>'];
for(i=0;i<divs.length;i++){document.body.innerHTML+=div(divs[i][0],divs[i][1],divs[i][2]);}

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

Возвращаясь к говнокоду
То, что написано выше похоже на говнокод? Если да, то в каком месте?
Ответить с цитированием
  #28 (permalink)  
Старый 22.01.2012, 01:59
Профессор
Отправить личное сообщение для Seva1986 Посмотреть профиль Найти все сообщения от Seva1986
 
Регистрация: 01.10.2011
Сообщений: 422

Сообщение от d-kaktus
Это навскидку, можно же придумать с вложениями слоёв и без подобного цикла, а с передачей массива в функцию для построения слоёв по данным массива. Так же групповые параметры для повторяющихся значений, для класса, к примеру.
Это называеться сборка страници на клиенте. туже задачу можно на xslt сделать на браузере... приходит xml и xslt и собираеться html. да и ещё какимто шаблонизатором можно да и без xml, главное чтобы браузер понял что с этим делать...

Действительно такие идеи есть, только зачем это выносить на клиент? если это прекрасно делается на сервере?

Ну а если ещё дальше развить то можно вообще бинарник клиенту кормить, а браузер, хотя зачем тогда вообще браузер, ОС схавала бы его... Только ведь наоборот пошли по другому пути, давали разметку а браузер это отображал, потом стали в разметку пихать инфу как это нужно отображать, а потом и сейчас поняли что нужно всё разделить информацию, отображение, и что и как будет происходить. Наверное подобное решение не с потолка взяли, и явно есть какието преимущества такого подхода...
А то что вы предлагаете это какраз смесь, смесь от которой давно отказались.

Последний раз редактировалось Seva1986, 22.01.2012 в 03:40.
Ответить с цитированием
  #29 (permalink)  
Старый 22.01.2012, 06:25
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Seva1986 Посмотреть сообщение
Действительно такие идеи есть, только зачем это выносить на клиент? если это прекрасно делается на сервере?
а почему бы и нет? экспериментируем и познаём.

Сообщение от Seva1986 Посмотреть сообщение
Ну а если ещё дальше развить то можно вообще бинарник клиенту кормить, а браузер, хотя зачем тогда вообще браузер, ОС схавала бы его...
а вы знаете, что Dart собирается так делать?

Сообщение от Seva1986 Посмотреть сообщение
Только ведь наоборот пошли по другому пути, давали разметку а браузер это отображал, потом стали в разметку пихать инфу как это нужно отображать, а потом и сейчас поняли что нужно всё разделить информацию, отображение, и что и как будет происходить. Наверное подобное решение не с потолка взяли, и явно есть какието преимущества такого подхода...
MVC, да-а... ответьте мне на вопрос, как быстрее будет вывести, так ?
$proto = "<div>{user} - {message}</div>";
foreach($long_array as $user => $messages) result .= strtr($proto, array($user => $messages));
# не уверен, что он будет работать. просто пример.

или же так :
var data = <? echo json_encode($long_array); ?>;
build(data);

как долго формируется вывод у Вас на сайте? вот это время как раз можно убрать, перенеся на клиента.

Сообщение от Seva1986 Посмотреть сообщение
А то что вы предлагаете это какраз смесь, смесь от которой давно отказались.
а вот в это не могу поверить. это только начало появляться. есть ссылки, или что-нибудь в этом роде?
Ответить с цитированием
  #30 (permalink)  
Старый 22.01.2012, 13:05
Профессор
Отправить личное сообщение для Seva1986 Посмотреть профиль Найти все сообщения от Seva1986
 
Регистрация: 01.10.2011
Сообщений: 422

Сообщение от melky
а вот в это не могу поверить.
Я про подход раделения даныых отображения и т.д. я не про шаблонизаторы на клиенте...

Сообщение от melky
MVC, да-а... ответьте мне на вопрос, как быстрее будет вывести, так ?
ну а поисковики будут "рады" этому.. да и ещё куча проблем может вылезти.... тут куча нюансов может быть... хотя данный подход я не отрицаю...

Сообщение от melky
а вы знаете, что Dart собирается так делать?
чесно говоря до сегодня не знал, но не удивился, оно к тому и идёт что скоро будет называться не компьютер а гугл

Последний раз редактировалось Seva1986, 22.01.2012 в 13:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск