Пользователь
0,0
рейтинг
7 марта 2009 в 21:44

Разработка → Полный AJAX. Теория и Примеры. Фишки и Фичи

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

Наибольшие трудности при построении сайтов c применением AJAX возникают при реализации механизма AHAH (Asynchronous HTML and HTTP). Особенно выполнение на лету подгружаемых Javascript-ов. Также есть куча дополнительного «гемороя» при разработке AJAX сайтов и веб-приложений. Вы можете ознакомится с детальным описанием некоторых существующих проблем. Из-за указанных сложностей, многие разработчики отказываются от более насыщенного внедрения AJAX.

Однако, мало кто знает, что перечисленные проблемы можно решить. Тем более уже имеется ряд решений, которые позволяет с легкостью обходить проблемные и узкие места при разработке сложных AJAX веб-приложений, а также при динамической подгрузке HTML страниц со встроенными скриптами.

Одним из таких решений является Fullajax — технология построения сайтов и веб-приложений с использованием AJAX. Это совокупность алгоритмов, подходов, правил и методов максимального внедрения всей мощности AJAX & AHAH. Технология нацелена на уменьшение сложности и расширения узконаправленности области применения AJAX.

Fullajax выражен в отдельной независимой библиотеке. Это не аналог jQuery, Mootools, ExtJS, Prototype, YASS. Однако, совместное использование с современными javascript библиотеками не противоречит и не вызывает конфликтов, а наоброт дополняет друг друга. Библиотека предназначена сугубо для коммуникации. Весь упор сделан на удобство, гибкость и в то же время простоту в использовании методов и функций для обмена данными между клиентом и сервером. В ранее перечисленных библиотеках имеется DOM навигация и манипуляция, различные визуальные эффекты, наборы визуальных компонентов. В Fullajax всего этого нет. Зато есть свои другие возможности.

Список основных возможностей:

  • реализация простого интерфейса коммуникации
  • Fly AJAX (преобразование в AJAX «налету»), AJAX-фильтр — ссылки и формы по указанным критериям автоматически превращаются в AJAX
  • возможность индексация поисковыми роботами как на обычном сайте
  • парсинг и выполнение скриптов, линков и стилей в контенте динамически подгружаемых веб-страниц
  • акселератор (ускоритель) загрузки скриптов — параллельная загрузка с последовательным применением
  • несколько уровней кэширования HTML страниц, скриптов и стилей
  • возможность отключения переинициализации скриптовых функций (повторного исполнения) — повышает производительность, экономит вычислительные ресурсы и оперативную память
  • поддержка прямых ссылок на «AJAX сгенерированные» веб-страницы
  • реализация истории AJAX навигации (кнопки браузера «Назад» и «Вперед»)
  • полноценная обработка document.write и <frameset>; в каждом потоке динамически подгружаемых страниц
  • поддержка событий onload и onunload тега <body> и window.onload
  • изменения TITLE в соответствии с подгружаемым контентом
  • эмуляция мультипоточной работы, раздельная история для каждого потока
  • корректная работа счетчиков
  • обновление баннеров с каждым обновлением информации
  • AJAX загрузка файлов на сервер (upload) без перезагрузки
  • реализация простой модели событий
  • возможность использования локального хранилища flash storage
  • две модели запроса HTML страниц — «один-к-одному» и «один-ко-многим» (один запрос — ответ ко многим блокам)
  • поддержка отработки на локальной файловой системе
  • возможность совместного использования стандартных якорей и AJAX ссылок

Конечно, за одну статью рассказать обо всем, тем более с примерами и в деталях не получится, так как накладно и по времени и по количеству букв.
В данной статье речь пойдет о наиболее важных функциональных возможностях библиотеки. Планируется написать серию статей. Начнем с простейшего.

1. доступ к элементу по id


<div id="my-div"></div>
<script>
id('my-div').innerHTML = 'test1';
//или
SRAX.get('my-div').innerHTML = 'test2';
</script>


2. SRAX.onReady — готовность DOM


Функция которая вызывается сразу при готовности DOM. Такая функция существует во всех современных жабаскриптовых библиотеках.
SRAX.onReady(function(){alert(1)})
function mytest(){
    document.body.appendChild(document.cereateElement('div')).innerHTML = 'New Div';
}
SRAX.onReady(mytest)


Теперь непосредственно о коммуникационных функциях.
Для работы с AJAX запросами в библиотеке реализованы две функции dax и hax.

Основное правило:

  • для запроса текстовых данных, xml, json, и подобных необходимо использовать dax (DataAjaX)
  • для запроса html необходимо использовать hax (HtmlAjaX) — этот метод и есть поддержка AHAH (Asynchronous HTML and HTTP)
Все просто, если вы загружаете HTML код, который надо вставлять в страницу используем hax иначе dax.

3. Пример использования dax


dax({url:'myurl', id:'save-data', form:'myform', method:'post', cb:function(resp, cbo){
  alert(resp.text || resp.xml)
}})


данные всех полей (input, textarea, select, ...) с формы у которой id='myform' будут автоматически собраны и отправлены на url=myurl методом post

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

Список опций работы dax
  • url/src — URL запроса
  • id — внутренний id потока
  • method — метода запроса данных post или get (по умолчанию)
  • form — id формы, сама форма, id элемента или сам элемент, с которого необходимо собрать параметры
  • params — строка параметров, которые необходимо включить в запрос (name=val1&name=val2)
  • callback/cb — функция обратного вызова
  • callbackOps/cbo — опции, которые передаются в функцию обратного вызова
  • destroy — флаг авто удаления процесса из памяти после окончания запроса true или false (по умолчанию)
  • anticache/nocache — флаг антикеширования true или false (по умолчанию)
  • async — флаг выполнения асинхронного запроса true (по умолчанию) или false
  • xml — XML, эмуляция ответа, при наличии данного параметра запрос данных c сервера не осуществляется
  • text — текст, эмуляция ответа, при наличии данного параметра запрос данных c сервера не осуществляется
  • user — username, для подключения требующего имя юзера
  • pswd — password, для подключения требующего пароль
  • headers — массив header-ов из обьектов {ключ: значение}, которые необходимо передать на сервер. пример -> headers:[{Etag: '123'}, {'Accept-Encoding': 'gzip,deflate'}]
  • loader — лоадер-индикатор, если не определен — используется лоадер по умолчанию
  • storage — флаг использования локального хранилища true (по умолчанию) или false — действует только при подключении SRAX.Storage
  • etag — флаг использования Etag для идентификации новизны данных в локальном хранилище true (по умолчанию) или false — действует только при подключении SRAX.Storage


4. Пример использования hax



~70% всего кода библиотеки — это реализация работы hax. Эта функция выполняет все сложные операции по обработке разных вариантов HTML кода. Можно сказать hax — это полноценное ядро анализа и обработки HTML документов. Она автоматически выделяет и применяет стили и жабаскрипты, сама регламентирует их последовательность загрузки, метод загрузки ручной (через dax) или автоматический (отдавая процесс загрузки браузеру), реализацию истории AJAX навигации, обработку document.write, window.onload, автоматическое изменение title, поддержка прямых AJAX ссылок, другое.

Рассмотри внутренний алгоритм работы hax. При получении html ответа производится анализ документа и парсинг стилей, скриптов. Если стили и скрипты внешние производится их автоматическая рекурсивная дозагрузка. Рекурсивная означает если внутри дозагружаемых скриптов, стилей есть еще внешние ссылки процес повторяется. В случае если скрипты, стили с другого домена, процесс загрузки тогда отдается браузеру и последующий анализ таких скриптов, стилей не производится.

Для реализации четкой и стабильной работы при обработке сложных HTML страниц был разработан алгоритм контроля подгружаемости и очередности выполнения скриптов, стилей и линков, который снимает с браузеров эти обязанности. За счет этого реализована хорошая, стабильная, а главное одинаково предсказуемая работы AHAH в основных веб-браузерах.

Одним из «камней в сандале» является совместное использование AJAX и document.write. При появлении в скриптах document.write — работа сайта с применением AJAX (AHAH) по умолчанию невозможна. Так как document.write можно использовать только до окончания потока вывода основной страницы. В противном случае — контент страницы просто напросто стирается. В Fullajax функция document.write переопределена, таким образом что без ошибок выполняется то что было задумано программистом. Алгоритм эмуляции этой функции был одним из самых сложных моментов при разработке библиотеки.

Также одним из сложнейших функционалов библиотеки является реализация кроссбраузерной истории AJAX навигации. В конце концов, в Fullajax работа с AJAX историей сводится к определению одного параметра вкл/выкл.

Примеры работы с hax:

hax({url:'index.html', id:'my-div'})

В элемент с id='my-div' будет загружена страница 'index.html' с использованием AJAX истории.

hax({url:'index.html', id:'my-div', nohistory:1, onload:function(){
  alert('Hey Bingo!!')
}})

В элемент с id='my-div' будет загружена страница 'index.html' без использованием AJAX истории, после загрузки вылетит alert.

Список опций работы hax
  • url/src — URL запроса
  • id — id родительского элемента
  • method — метода запроса данных post или get (по умолчанию)
  • form — id формы, сама форма, id элемента или сам элемент, с которого необходимо собрать параметры
  • params — строка параметров, которые необходимо включиють в запрос (name=val1&name=val2)
  • callback/cb — функция обратного вызова
  • callbackOps/cbo — опции, которые передаются в функцию обратного вызова
  • nohistory (noHistory)- флаг использования истории AJAX навигации, по умолчанию false — т.е. история включена
  • rc — использовать (true) или не использовать (false — по умолчанию) коррекцию путей относительных ссылок
  • overwrite — флаг true или false (по умолчанию) перезаписи событий onclick и onsubmit при Fly AJAX (по умолчанию — функции на событиях onclick и onsubmit не перезаписываются, а дополняются)
  • destroy — флаг авто удаления процесса из памяти после окончания запроса
  • html — HTML текст, эмуляция ответа, при наличии данного параметра запрос данных c сервера не осуществляется
  • anticache/nocache — флаг антикеширования true или false (по умолчанию)
  • startpage — признак первой страницы истории true или false (по умолчанию)
  • async — флаг выполнения асинхронного запроса true (по умолчанию) или false
  • historycache — флаг использования кеша истории true или false (по умолчанию используется USE_HISTORY_CACHE)
  • seal — флаг «изоляции» true или false (по умолчанию) — используется для решения конфликтов css стилей
  • user — username, для подключения требующего имя юзера
  • pswd — password, для подключения требующего пароль
  • headers — массив header-ов из обьектов {ключ: значение}, которые необходимо передать на сервер. пример -> headers:[{Etag: '123'}, {'Accept-Encoding': 'gzip,deflate'}]
  • add — флаг true или false (по умолчанию), определяет принцип добавления подгружаемого контента в родительский элемент: перезапись (false) или добавление (true)
  • onload — функция, которая вызывается после полной загрузки контента в элемент
  • loader — лоадер-индикатор, если не определен — используется лоадер по умолчанию
  • notitle — флаг true или false (по умолчанию), отключает авто-изменение title
  • onerror — функция, которая вызывается в случае ошибки загрузки контента
  • storage — флаг использования локального хранилища true (по умолчанию) или false — действует только при подключении SRAX.Storage
  • etag — флаг использования Etag для идентификации новизны данных в локальном хранилище true (по умолчанию) или false — действует только при подключении SRAX.Storage


Продолжение



Если Бог даст времени и сил, в следующей статье (если тема интересна читателям), планируется осветить ряд вопросов таких как:
  • Filter (Fly AJAX) — принципы и примеры автоматического «заворачивания» простых ссылок в AJAX ссылки
  • directLink — поддержка прямых AJAX ссылок
  • linkEqual — преобразование AJAX ссылок в человеко-понятный вид
  • addScript — динамическое добавление скриптов (даже с document.write)
  • оптимизация загрузки скриптов, алгоритмы работы Fullajax c обработкой скриптов
  • addCss, addStyle — динамическое добавление стилей
  • Storage — локальное хранилище на основе Flash
  • Anchor — возможность совместного использования стандартных якорей и AJAX ссылок (уникальная разработка)
  • model2Marker — запрос один-ко-многим (один запрос, авто заполнение нескольких разных элементов)
  • семейство ax: атрибутов
  • Effect — функция для применения эффектов обновления HTML страниц
  • Include — реализация тега <include src=«index.html»></include>
  • Uploader — квази-AJAX аплоадер файлов
  • addEventsListener — добавления объектам интерфейса модели событий
  • Default — параметры работы по умолчанию
  • преимущества и недостатки AHAH сайтов перед обычными


Всех благ, спишемся…

UPD1: Некоторые примеры внедрения
Dream Travel — туристическая Компания
Tooglecms — правда еще сыровато, только первая бета.
Datamash.us — виджет платформа

Форум где можно задать вопросы технического характера
sirus @sirus
карма
29,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (141)

  • 0
    И что именно является причиной для использования SRAX etc.?

    Пока не нашёл ничего, чего бы не было в jQuery.

    P.S.: для истории есть плагины, в Ext.JS так вообще в ядре.
    • +1
      Поддержка истории в ExtJS появилась намного позднее чем в нашей разработке. Когда проверял их реализацию нашел несколько багов, особенно в Опере.
      Реализация истории в Fullajax другая, отработано много разных тонких моментов, все сразу не описать. Да в более специфических случаях манипулировать историей у нас можно гибче… вообщем надо вам самому попробывать.

      загрузите в jQuery страницу c таким содержимым123<script>document.write('456')</script>789
      есть и другие примеры.
      • +5
        За использование document.write надо что-нибудь отрывать…

        Вообще, я тоже не усматриваю преимуществ перед jQ… а синтаксис куда менее интуитивен. hax({url:'index.html', id:'my-div'}) — это что, куда и зачем? Аналог на jQuery — $('#my-div').load('index.html') — пракитически нормальный текст на английском, СРАЗУ понятно, что происходит.
        • 0
          читайте внимательнее, никто не ставит в сравнение с jQuery, мы в разных весовых категориях и в разных лигах. Если вам что-то непонятно, это не значит что это непонятно всем, что куда и зачем я расписал — все предельно просто.
          • +1
            Если вы даёте ту же функциональность, но в гораздо более деревянном синтаксисе — не удивляйтесь сравнениям…

            Впрочем, может быть во второй статье будет понятнее, чем Ваше решение удобнее в конкретных случаях.
            • –3
              мда. что вам ответить, лишь одно то что вы конкретно не специалист, потому что мне вам надо разжевывать, синтаксис — аналогичный
              $("#links").load("/Main_Page #jq-p-Getting-Started li", {

              });

            • 0
              тьфу заглючило предыдущий пост
              jQuery
              $.ajax({
              url: "data.xml",
              dataType: "text",
              success: function(data){
              }});



              Fullajax
              dax({
              url: "data.xml",
              success: function(data){
              }});


        • 0
          >За использование document.write надо что-нибудь отрывать…

          оторвите это что-то у GoogleAdsense и GoogleMap
          • 0
            gm уже, слава богу, научились динамически подгружаться.
            • 0
              Adsense тоже?
              • 0
                Не знаю, им не интересовался.
    • 0
      Причиной использования может удобство при реализации того или иного функционала, или вообще уникальность решения. У меня на кухне стоит набор из ножей и разными ножами я режу разные продукты. Точно так же и на работе. Эта первая статья более обзорная, дальше будет больше практических примеров, после чего вы сможете определить стоит использовать или нет. И в каких именно случаях. Следите за дальнейшими публикация.
    • +1
      ну реально зацепил вопрос — :) да в jQuery много чего нету, jQuery всегда повторно загружает скрипты которые нашел в запрошенных HTML, всегда повторно их исполняет, надо опять же искать плагины для истории, для разделения запросов по ИД, и т.д. и т.п. jQuery очень хорошо, не не идеально, есть что доработать. В большинстве случаев его хватает с головой, сам им пользуюсь. НО все же…
  • +12
    SRAX — понравилось название!

    … ты сделал свой код через SRAX?
    • +3
      ага, SRAX-но получилось :). Или получился полный SRAX (в хорошем смысле). Все просто — это абревиатура, главное что коротко и запоминается :)

      кстати AHAH если прочитать по русски тоже интересно звучит :)
      • 0
        :)
    • +4
      SRAX, dax, hax… какой-то сакс сплошной
      • 0
        ага, производные от ajax, кстати лебедев страдает тем же :) спектрус, скрепкус, шарикус,… ус,… ус
        • –2
          кто бы знал что слово УКСУС — производное от AJAX :)
          • 0
            да нет, я в том смысле что лебедев тоже свою фишку рубит, может у него как раз корень всех слов уксус :). это вариант, а все названия производные от этого слова
            • 0
              да то понятно. против лебедева ничего против не имею, как и против всех остальных людей в этом мире :)
  • +2
    Удивительно, но на той же Dream Travel всё работает замечательно и страница загружается почти моментально, несмотря на наличие Вашей загружаемой библиотеки (использование, к примеру, ExtJS сказывается на скорости загрузки страницы крайне негативно :)). Это очень круто, так держать!
  • 0
    Большое человеческое спасибо, на днях только бились с подгружаемыми скриптами, теперь посмотрим как можно это сделать красивее!
    • 0
      ок, если что не получится добро пожаловать — подскажу как лучше сделать
    • 0
      В jQ если что их тоже можно загрузить =) Красивее причем =)
      • 0
        а откуда вы знаете что красивее? я еще примеры загрузки скриптов не выкладывал :). Авансом скажу что jQuery однозначно проигрывает по загрузке скриптов, хотя бы тем что он всегда повторно их загружает, я уже не говорю о каких то возможностях управления процессом загрузки и выполнения.
        • 0
          Ну я просто враппер написал, причем с таким же прототипом, как вы любите: ф(адрес, параметры, функция(){})
          обошелся в 10 строк(пул запросов), использую его для кроссдоменного аякса.
          • 0
            а откуда сравнительный анализ? вы покатавшись на одной машине, даже не садившись за руль других, сразу же говорите что остальные машине хуже :)
            • 0
              Ну имхо все равно как бы 1 либа лучше, чем 2 с перекрывающимся функционалом ;)
              • 0
                я скажу немного по другому, хорошо иметь набор разных инструментов и пользоваться ими по потребности. У меня дома отвертка у нее куча насадок — в принципе и одной насадкой можно раскручивать 70% винтов, но я изначально всегда оцениваю какой винт и выбираю наиболее удобную для него насадку.
  • 0
    Вещь крайне полезная, жду новых статей!
  • +4
    Ммм … приятно, когда несколько людей думают в одном направлении =)
    Несколько примеров сайтов, которые я делал с похожей технологией.
    www.downstream.ru/
    www.qti-online.com/
    Только я реализовывал на любымых мной mootools. Кстати, класс я тоже с ходу назвал FullAjax =) Именно это слово крутится на слуху для подобной технологии …
    • +1
      пять балов, очень приятно работают сайты.

      Да именно Fullajax, название действительно родилось самособой — ничего другое так не подходит

      кстати еще один проект, который проект который копает в эту сторону

      • 0
        По-моему, вот на этом www.downstream.ru слегка переборщили с эффектами. Вот когда его не трогаешь, а просто смотришь — приятно и симпатишно, а когда начинаешь ходить по ссылочкам и двигать мышкой, все ёрзает и бегает — я бы не назвал это приятным сайтом.
        И в корне не понимаю, зачем загружать пункты главного меню аяксом, почему не сделать нормальный человеческий переход на другую страницу?
        На главной, вожу мышкой по ссылкам, внизу что-то меняется, при этом я не могу полностью прочитать, т.к. оно не помещается у меня на экран, а когда мышку убераю, то оно опять меняется.
        Это очень красочный пример когда сильно намудрили со всякими эффектами и сделали наоборот не удобно.
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            и создавая таким образом более высокий уровень интерактивности
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                я и не думаю что вы против. у вас свое мнение относительно данного вопроса, это хорошо я его уважаю. у меня свое, я к примеру уверен что получая контент страницы через АЯКС я могу больше им управлять, к примеру разделить его куски и вставить по разным частям сайта, вырезать определенные элементы, которые не надо показывать юзеру. и другое. мне нравится когда процесс более контролируем мною. но все же я не призываю все сайты делать так. в любом случае контент сайта — это самое важный обьект.
                кстати мысль пришла — это чем-то похоже не еду (контент) — важнее всего как приготовлена пища, ее вкусовые качества, но так же большую роль играет и оформление стола (дизайн), чистота вокруг (легкость), быстрота работы обслуживающего персонала (аякс)
                Да и непрофессионалам накладно так делать сайты, так это довольно не тривиальная задача — соответственно могут увеличится цена и сроки проекта.
                • 0
                  > я к примеру уверен что получая контент страницы через АЯКС я могу больше им управлять

                  Вы тут какую-то глупость сказали. Как ни крути, а на стороне сервера инструментов с контентом у вас намного больше. Если Вы сейчас начнете говорить, что у Вас многое зависит от действий пользователя которые он совершил на странице, и если все формировать на сервере то нужно предавать кучу переменных — то Вы попросту непраилньо построили модель ресурса, а других причин удобства формирования на стороне клиент я не вижу.
                  И еще, вот когда у меня в браузере открыто с пару десятков страниц, у которых там кучу джаваскрипта, и браузер вдруг начинает отжирать кучу ресурсов — за такое вобще убивать надо на месте, проектируйте нормально и не будет проблем никаких.
                  • 0
                    сюда по вашему портфолио у вас богатый опыт

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

                    • 0
                      Извините, я Вас не совсем понял. Про какое портфолио Вы говорите?
                      • +1
                        > Про какое портфолио Вы говорите?

                        У вас какой опыт разработки веб-приложений? Есть какие то исследования, наработки по своей инициативе, проекты более менее успешные в своей целевой аудитории? Просто воспринимать всерьез ваши комментарии никто не будет.

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

                        > Вы попросту непраилньо построили модель ресурса, а других причин удобства формирования > на стороне клиент я не вижу.

                        Вот яркий пример где формирование идет на клиенте: www.google.com/finance

                        Zoho.com — формирование интерфейса НА кленте
                        Zimbra.com — просто рассадник AJAX — все на клиенте

                        Google продукты:

                        GoogleMaps — формирование идет на клиенте
                        Google Docs, Spreadsheet — на КЛИЕНТЕ
                        iGoogle (Gadget API в основе) — на… к л и е н т е

                        > у которых там кучу джаваскрипта

                        Перечислять можно на самом деле долго. И все эти продукты используют миллионы людей.

                        Ну а Вы чем полезны?
                        • 0
                          да ладно, не трогайте его, у него иногда возникают непонятные эмоции. может человеку «помощь» нужна…
                          • 0
                            Я очень рад что Вы умеете гуглить, но к сожалению на той фотографии не я.
                            Я так понимаю Вам очень хотелось сказать мне какую-то гадость, могли бы сообщение что ли отправить.
                            • 0
                              честно говоря хотелось, но не сказал, если бы это что-то изменило в лучшую сторону это никому не поможет. причина: вы сами наговорили гадостей про «убивать на месте» и прочее, а фотка прикольная :), тем более она в публичном доступе…
                              • 0
                                Да фотка смешная, особенно если знать контекст.

                                Если Вы восприняли «убивать на месте» в свой адрес — то извините, я наверное неправильно выразился. Я имел в виду тот самый сайт который приводился в примере в начале цепочки, на нем все прыгает и крайне неудобно, явно перебор. Наверное все же резко выразился :)

                                По поводу Вашей статьи, еще ничего не могу сказать, я никак не могу сесть и полностью все прочитать. Но однозначно мне интересно, кстати прошлые Ваши статьи мне понравились.

                                На счет темы изобретения велосипеда — вопрос двоякий, если Вы сами смогли даже повторить уже существующий функционал — все равно это плюс Вам. А по поводу дополнительных фичей, буду вникать когда все-таки сяду читать статью.
                                • 0
                                  у вас какое разрешение монитора? у меня 1280 х 1024 — сайт смотрится просто «поцигански шикарно». сайт, который запоминается своей необычностью, сайт визитка должен быть именно таким, это не электронная газета. на такие сайты люди приходят за контактной информацией, они не для каждодневного просмотра. я считаю что программер и дизайнер свою задачу выполнили на пять балов.
                        • 0
                          По-моему, Вы не совсем внимательны. Мой комментарий был не относительно данной статьи (её я еще не успел прочитать, и она у меня висит в закладках, т.к. я читал статьи этого человека и они мне были интересны). Мой комментарий был по поводу конкретного сайта www.downstream.ru в котором на мой взгляд, переборщили с аяксом и с JS в принципе.

                          По поводу www.google.com/finance ничего сказать не могу, не пользовался, т.к. этот сервис мне не интересен. Но вроде заметил что там все показатели отображаются в реально времени, поэтому без аякса никак — так тчо с Вашей стороны не самый удачный пример.
                          Все приведенный примеры из другой оперы, посмотрите сайт который я указал выше. И вообще стоит почитать цепочку комментарий целиком или у Вас недержание?

                          Вы ничего обо мне не знаете, а уже делаете выводы — как-то глупо.

                          В общем читайте внимательней и держите дистанцию — переход на личности, всегда говорит о том, что по сути Вам сказать нечего.
                        • НЛО прилетело и опубликовало эту надпись здесь
                          • 0
                            уважаемый,
                            1) отключите у браузера яваскрипт и посмотрите на свой сайт, а потом на тот сайт который вы критикуете.
                            2) если вам нравится постоянно грузить ваш зоопарк скриптов в количестве 7-ми, это ваше полное право
                            3) это pilotrussia.ru/html/pilot-2008-files/js/dealers.js.php вы называете надежным решением? смотрите пункт №1
                            4) если у вас возникают трудности с реализацией и поддержкой а соответвенно и надежностью своих решения с применением АЯКС, не стоить думать что и у других такая же ситуация
                            5) с появлением АЯКС сайты качественно перешли на другой уровень, АЯКСа как раз все это время и не хватало, я как только узнал о нем — сразу понял — вот он пятый элемент
                            6) кто как хочет так и…
                            • НЛО прилетело и опубликовало эту надпись здесь
                            • НЛО прилетело и опубликовало эту надпись здесь
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • +1
                        > чем сложнее система — тем оне менее надежна
                        ну это тогда надо снова нам в палке копалке возвращаться в то время были примитивные системы

                        > Вот тот же самй Мапс, аякс там он просто необходим. Как бы вы сделали
                        > его другому? перезагрузка всей страницы производилась бы каждые 1
                        > секунду пока пользователь двигается по карте. Вот тут айакс и помог.

                        Это говорит о том что вы в теме веб разработки не разбираетесь или разработчик с небольшим стажем, но зато других учить можете. Так вот перемещение/изменение масштаба карты там нет никакого AJAX это чистой воды DHTML. Куда уж вам понять выгоды использовании загрузки данных через XHR по требованию. Изучите основы хотя бы.
                        • НЛО прилетело и опубликовало эту надпись здесь
                          • 0
                            напишите статью — «Так делать нельзя», или наоброт «а вот так делать лучше», очень хотелось бы почитать про ваши творческие достижения, поделитесь с народом, научите людей делать правильно, покажите что вы проффесионал, что большинство сдесь заблуждается.
                          • 0
                            > АСИНХРОННУЮ ПОДГРУЗКУ КАРТИНОК ПО НЕКОТОРОМУ
                            > ДЕЙСТВИЮ ПОЛЬЗОВАТЕЛЯ БЕЗ ПЕРЕЗАГРУЗКИ ВСЕЙ СТРАНИЦЫ

                            Так картинки всегда грузятся асинхронно после какого то действия пользователя, получается любой сайт содержащий тег IMG использует технологию AJAX. С большой натяжкой загрузку картинок через тег IMG можно отнести к этой технологии.

                            Ну если бы вы сами читали о нем то знали бы плюсы (не я писал их кстати, это вам вики править надо :)

                            Экономия трафика

                            Использование AJAX позволяет значительно сократить трафик при работе с
                            веб-приложением благодаря тому, что часто вместо загрузки всей страницы достаточно загрузить только изменившуюся часть, иногда довольно небольшую.

                            Уменьшение нагрузки на сервер

                            AJAX позволяет несколько снизить нагрузку на сервер. К примеру, на странице работы с почтой, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту.

                            Ускорение реакции интерфейса

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

                            P.S. мне WireShark хватает
                            • НЛО прилетело и опубликовало эту надпись здесь
                              • НЛО прилетело и опубликовало эту надпись здесь
                            • НЛО прилетело и опубликовало эту надпись здесь
                              • 0
                                да ладно вам про запросы. Точечные запросы как раз выгоднее делать (в целях снижения нагрузки тоже), а логику работы интерфейса на клиенте.

                                Если вы клепаете сайты для фирм с 5-10 статичными страницами и 2-3 формами для отправки сообщений, то конечно вам это все не нужно.

                                А по поводу производительности — все просто. Любой сайт чья логика полностью находится на сервере легче задосить (имеются ввиду сайты чья логика это не до 1000 строк кода, а от 1000), чем если сервер предлагает множество точечных серверных методов, которые оперируют небольшими порциями данных отдаваемых клиенту по требованию. Клиент получает данные и уже JS или Flash и т.д. отображает их (например, с помощью клиентского шаблонизатора) — такой подход позволит снизить потребление траффика, уменьшит нагрузки на сервер и позволит создавать более интерактивные веб-приложения. Не говоря уже о том что такой подход более четко отделяет представление данных от самих данных.
          • 0
            При XHR загружается не ВСЯ страница, а только нужные блоки, а еще лучше только данные. Неужели непонятно что быстрее загрузить только те элементы которые нужно отрендерить, чем на сервере заного создать весь код страницы и передать его на отрисовку браузеру.

            А если глобальнее?

            XHR это уменьшении времени отклика сайта, снижение траффика, снижение нагрузки на сервер и клиент, дата центры кушают меньше электричества, меньше теплового излучения в атмосферу, лучше экологическая обстановка мире, никто не стреляет в Ираке чтобы получить больше нефти, потому что N ому дата центру нужно много энергии, потому что миллионы Вась из Урюпинска не понимают преимущества XHR и все генерят на серверах. Используй XHR — сделай мир лучше.
            • НЛО прилетело и опубликовало эту надпись здесь
          • –2
            Не знаю как для Вас, но для меня важнее удобство. То, что я увидел на то сайте может и можно, но далеко не удобно — яркий пример когда человеку дали инструмент, а он как та обезьянка, то крутит, то на хвост наденет.
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                каждый решает своим задачи по своему. с чего вы взяли что АЯКС должен применятся для каких-то конкретных узкоспециализированых задач? Я думаю его можно использовать так как фантазии хватает, лижбы это было без последствий. Уверен что ребята срубили нормально денег за сайт с заказчика. А вы тут пытаетесь мемуары писать на тему того что вам не понравилось чья-то идея реализации…

                знаете такое выражение? не умеешь — не берись, не нравится — не смотри.

                лично мое мнение запихивать контент в JS без особой на это надобности чревато глубоким игнорированием поисковиками, так что не тратьте время а подумайте чего бы сделать хорошего, или чего написать позитивного. а то сопли тут всю тему испачкали. хотел же написать пару предложений для «особых» любителей АЯКСа вначале статьи. зря не написал.

                • НЛО прилетело и опубликовало эту надпись здесь
                  • 0
                    дак зачем вообще на кого-то наезжать, я уже вообще не понимаю кто и что пытается кому-то доказать, то АЯКС плохо, то круто, нагрузка может как увеличится так у уменьшится, о чем вы спорите, люди-и-и-и, все зависит от конкретной задачи.

                    чуваки, харэээ

                    МИР, PEACE, LOVE, AJAX!!!
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • 0
                        ждите продолжения, тема горячая, прошлый раз когда писал, тоже сильно спорили :). ладно, спасибо всем кто принимал участие в дебатах.
    • +1
      у вас в AJAX ссылках используется: это вы так сделали или mootools определяет так? очень интересное совпадение, я думаю мы первые начали практиковать обозначение AJAX ссылок через #:. Это как бы сразу характеризует что сайт фулаяксовый. Рад что это становится стандартом дефакто.
      • 0
        Круто, реально похожие мысли приходят в голову одновременно =)
        У меня была основная цель: чтобы клиенты не видели уж очень большой разницы между обычной URI-строкой и строкой с AJAX-ссылкой, для этой цели символ «:» подошел лучше всего.
        В принципе, можно было вообще от этого символа отказаться, но тогда терялась бы возможность сделать много элементов на странице, которые менялись бы независимо друг от друга. Хотя, если честно, пока что использовать такую фишку не приходилось …
        А вот класс, который я использую для корректной обработки истории (для Mootools): digitarald.de/project/history-manager/.
        Класс написан совершенно гениальным человеком, который сам себя называет «Web Craftsman» =)

        А насчет стандартов дефакто: уже давно пора бы оформить вот эту страницу ru.wikipedia.org/wiki/FullAjax )) Это же по сути целая технология, которая объединяет другие технологии определенным образом, поэтому такой термин имеет право на существование
        • 0
          > принципе, можно было вообще от этого символа отказаться, но тогда терялась бы возможность сделать много элементов на странице, которые менялись бы независимо друг от друга.

          слабо вас понял

          > А насчет стандартов дефакто: уже давно пора бы оформить вот эту страницу ru.wikipedia.org/wiki/FullAjax

          я еще давно пытался, два раза писал, профаны сказали что я рекламирую свой сайт и удаляли, не захотел больше тратить время на них. Если несколько человек поддержит — тогда админы пропустят. так что можете попробовать, я поддержу вас.
          • 0
            Вот здесь, например, изменения нескольких виджетов учитываются одной строкой истории
              • +1
                все понял, да да, у нас аналогичные решения, тоже имеется загрузка данных в разные элементы с поддержкой разделенной истории
        • +2
          кстати в используемом вами классе для истории
          Scr for IE6/7 iframe, must exist on server!
          а у нас без :)
      • +1
        Я прошлым летом занимался одним Enterprise веб-приложением с обильным применением AJAX. И мы там тоже ввели #-ссылки для AJAX как своё ноу-хау. Так что да, похоже, это какой-то самоочевидный стандарт.

        А за статью — спасибо большое. Продолжайте, так как очень интересно и полезно.
        • +1
          я имел ввиду именно:, знак # однозначно используется для АЯКС, так как на location.hash построен принцип реализации AJAX истории
          • 0
            Я просто неудачно выразился: имел в виду ровно то же самое, что и вы :)
    • 0
      а можно поподробнее, как у вас обстоит дело с поисковиками
      • +2
        можно, в следующей статье будет рассмотрена эта тема
  • 0
    на сайте дрим трэвел нажимаю кнопку подбор тура — и ничего… открывается новая пустая страница… Но, это я так, к слову
    • +1
      спасибо, видать в разработке, передам авторам сайта. это не мое детище, хотя мне очень нравится :).
      • 0
        у меня кстати вопросик. Может я конечно не очень внимательно прочитал или не понял чего, но чем обусловлено название ф-ций dax/hax?
        • +1
          dax — DataAjaX
          hax — HtmlAjaX
          • 0
            А чем вам не угодили AJAH и AJAD?
            • 0
              всмысле? с чего вы взяли что они мне не угодили? :)
              • 0
                Ну, мне показалось, что они вам не угодили :)
                Используется ли в «hax» XML?
                • 0
                  для приема XML используется dax,

                  hax — для html, dax — для json, xml, text, css, javascript, etc.
                  • 0
                    Так ведь AJAX — Asynchronous Javascript and XML.
                    Для HTML будет, соответственно (Asynchronous Javascript and HTML) — AJAH.
                    И, далее, AJAJ (json), AJAR (RAW, к примеру).
                    • 0
                      • 0
                        Но ни как не HtmlAjaX ведь, согласитесь? ;)
                        • 0
                          Не цепляйтесь к «икcам и игрекам», они всё равно не передают смысл точно. Когда-то с целью обощить идею было чудное предложение считать, что AJAX — это Asynchronous JAvascript eXchange. Или, например, D.Flanagan гневался и предлагал DHTTP, STAR или DIRT. Но было как всегда поздно, ушло в народ… ;)
                        • 0
                          так это просто рабочее название метода :), это же не определение какого подхода реализации, просто название метода
                    • 0
                      а такой страницы нет en.wikipedia.org/wiki/AJAH

                      скорее всего это одно и тоже, я привык называть AHAH
        • 0
          для запроса текстовых данных, xml, json, и подобных необходимо использовать dax (Data AjaX)
          для запроса html необходимо использовать hax (Html Ajax) — этот метод и есть поддержка AHAH (Asynchronous HTML and HTTP)
  • 0
    Спасибо за начинание. Возможно, многим оно прийдется по вкусу, но считаю, что ваша библиотека происходит от велосипеда, необходимости городить который нет, в силу того, что весь необходимый функционал уже реализован в таких более популярных программах как MooTools и jQuery.
    • +1
      не весь
    • –1
      Начинание :). Вы бы на дату посмотрели начала проекта, мы начали когда o Mootools никто и не слышал. И тем более уже столько времени прошло, а у нас имеется уникальный неповторимые фишки. Мне кажется вы бегло прочитали статью. Или Вы наверно большой знаток jQuery, Mootools? Я за вас рад. Ваш разговор на тему: зачем молоцикл, ведь уже давно есть машина. Можете и дальше ездить на машинах. Мотоциклы не ваша стихия. Я бы мог сказать так — нафига придумали .Net — это производный велосипед от Java. Однако я так не скажу, потому что хоть отчасти это и правда, но .Net тоже очень хорошо.
      • 0
        >но .Net тоже очень хорошо.
        Особенно он хорош тем, что в его состав входит jQuery.

        >а у нас имеется уникальный неповторимые фишки
        «Бывает нечтo, о чем говорят: „смотри, вот это нoвoe;“ но это было уже в векax, бывших прежде нас» Екклезиаст 1.10

        ЗЫ в отличие от предыдущего товарища я не отрицаю необходимость разработки велосипедов, но отчасти он прав. Разнобой фреймворков не есть хорошо. Возникает куча проблем с поддержкой, совместимостью, развитием проектов. Рано или поздно все сведется к наличию 2-3 доминирующих проектов, одним из которых будет jQuery.
        • 0
          мне вас жаль, вам говорят одно, но у вас в голове совсем другое, вы уже себе что-то придумали и так решили окончательно, и вас совсем не интересует что вам говорят, вы даже не слышите этого потому вы уже себе все решили. У меня жена так же воспринимает ситуации, мне ей иногда трудно что-то объяснить, вернее ей трудно меня понять. Она уже так себе решила :).

          Вы разницу между словами «что-то новое» и «уникальное» понимаете? Уникальное означает — что не имеет аналогов, а новое это это то чего не было раньше. Говоря уникальное я не просто языком сотресаю воздух. Я три года занимаюсь разработкой этой технологии. Проанализировал уже массу существующий на сегодняшний день библиотек: ExtJS (версия 1.1 вообще была мною модифицирована с с целью более кроссбраузерной работы и менее глючной), у Dojo я подсмотрел реализацию некоторых вещей, и прочее.
          Вот вам пример — там имеется примерчик AddSense — покажите мне такую реализацию в jQuery. Только не-надо говорить что вам это не надо и никому это не надо. Я внедрял подобную весчь для немецкой компании в веб-чат.
          Есть и другие фишки. Имейте терпения дождитесь следующих публикаций. Буквально на днях мы придумали обход проблемы связанную с багой (http://bugs.adobe.com/jira/browse/FP-1258) хранилища на базе FlashPlayer10, которую пока никто не решил (http://www.dojotoolkit.org/forum/dojox-dojox/dojox-support/dojox-storage-versus-flash-player-10-isnt-compatible).
          И еще — "Карта не есть территория", Альфред Коржибски.
          • 0
            >Вот вам пример — там имеется примерчик AddSense — покажите мне такую реализацию в jQuery
            >Только не-надо говорить что вам это не надо и никому это не надо.
            Таки да :)

            В jQuery этого нет, потому что это сугубо частная частная задача, необходимость которой очень сомнительна. Так же как и вообще приложения Fullajax.
            Притянутость за уши этой технологии в приведеных вами примерах — сайтах со статичным контентом (www.dreamtravel.ru) настолько очевидна, что обсуждать как-то совершенно неинтересно.
      • 0
        Слушайте, что Вы такой дёрганый? Если Вы на каждый нелестный отзыв будете так бурно реагировать — нервные клетки кончатся раньше времени. Будьте поспокойнее — Вам пишут потому, что _заинтересовались_ Вашей библиотекой. Если бы не заинтересовались — не стали бы и ругать.

        Проект Вы начали раньше Мутулз — прекрасно. Почему тогда про него никто не слышал, а про мутулз знают все? У Вас есть коммьюнити хотя бы в сотню пользователей, хотя бы в десяток пишущих патчи разработчиков? Есть публичный репозиторий, баг-трекер? На каком спектре платформ вы проводите тестирование, в каких браузерах гарантируете работу? Ничего этого на вашем сайте нет…

        Пока у Вас не будет хотя бы чисто формально всего этого — не сравнивайте себя, пожалуйста, с серьёзными библиотеками. Я охотно верю, что какие-то задачи Ваш код решает лучше, но для пользователя (того разработчика, что будет юзать ваш код) важнее надёжность проекта и поддержка. БЕЗ этого — мы имеем наколенный велосипед. Пусть и с уникальными фичами.
        • 0
          Добавлю, чтобы не было неверного понимания — велосипед обсуждать вполне можно, отдельные его уникальные и интересные решения — тоже. Только не надо при этом гнуть пальцы в сторону известных библиотек. Они куда больше труда вкладывают в надёжность проекта, и именно поэтому ими пользуются.
          • +1
            где пальцы загнуты в сторону известных библиотек? каким это предложением? попрошу аргументировать. если нечем аргументировать тогда читаем опять этот комментарий habrahabr.ru/blogs/AJAX/53831/#comment_1433188. все правильно — вы себе что-то решили.

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

        • +2
          ну вот, начинается —
          1) сравниваете вы, а обвиняете меня в этом.
          2) не вижу связи между словом велисипед — и поддержка. значит все что нестандартное это велосипед? для вас все велосипеды.
          3) судя по вашим высказываниям по данной статье вы особо не вдаваясь в подробности сделали выводы, я считаю это не правильно. представьте если бы судьи выносили так приговоры? увидел человека — и сходу тебе 10 лет сроку — мне не нравится твоя чичя, а ты свободен у тебя рубашка классная.
          4) комьюнити есть, о багах пишут либо на форум, либо мне персонально, тестирование провожу на всех современных браузерах, гарантирую работу в ИЕ6+,FF2+,Opera9+,Safari3+
          5) вы имеете право писать негативные отзывы — я имею точно такое же право вам тем же

          • +1
            Пожалуйста, продолжайте программировать на js самостоятельно, набивая шишки, находя уникальные решения. Рассказывайте о них, спорьте. Не обращайте внимание на «велосипедные» нападки, это стандартный трюк. Лагерь так называемых «серъёзных» библиотек окончательно потерял рассудок и уже нападает на своих же сородичей. Раньше было — «мы круче обычного яваскрипта», теперь — «пошли все вон, мы должны остаться одни». Докатились, веб-два-нолики…
            • 0
              да, точно подмечено.
              честно говоря я и не обращаю внимания, просто не хочу оставлять такие высказывания без должного ответа, а то попривыкают лить грязь на все подряд.
              • 0
                не партесь :) глупых не переубедишь, а умные сами все поймут.

                У меня вот вопрос — расскажите, плиз, в следующих материал про кеш/сторадж и обход document.write, именно с технической стороны
                • 0
                  хорошо, плану про document.write 3-я статья, про кеш/сторадж 4-ая статья
                  2-ая Fly AJAX, Filter, индексация поисковиками
      • +1
        Приношу извинения, писал с iPhone через Edge — была возможность только прочитать данный пост, но не досконально изучить сайт проекта. Не хотел вас обижать.
        • 0
          принято, я не обидчевый :)
          • 0
            Посмотрел ваш сайт и вспомнил, что посещал его еще года полтора назад!
            Безусловно, работа достойная, честь вам и хвала за труд и поддержку проекта.
            Мое чувство неприятия обусловлено привязанностью («ах, эта странная любовь») к библиотеке MooTools, которая пляшет под мою дудку года два. Знали бы вы, какие вещи заставлял ее делать…
            Собственно, формулируется так:
            «Если могу сделать все что захочу при помощи фреймворка N, к чему тогда мне ваш F
            Пару вопросов:
            1. Валидно ли добавлять атрибуты к тегам? Например, axid.
            2. На странице примеров не работает ни один из них.
            Пользуюсь последним Firefox, ОС — Mac OS X Leopard. FireBug с радостью сообщает о следующем:

            • 0
              > Валидно ли добавлять атрибуты к тегам? Например, axid.
              точно не знаю насколько это валидно для HTML режимов разных, по крaйней мере в структуре XML это нормальное явление

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

              а вот говорите не работают примеры? на ссылочки нажимали? какие-то ошибки другие имеются?

              • 0
                На ссылочки нажимал — реакции нуль. Другие ошибки не могли быть прослежены в силу статичности происходящего.
                • +1
                  антиблок рекламы стоит? контекстную рекламу от гугля видно?
                  • +1
                    Вот! Вот что значит — разработчик любит свой продукт! Предугадать ошибку пользователя — разве это ли не провидение любой нестандартной ситуации?
                    Стоит. Шах и мат.
                    Единственное что — не совсем понятно, почему скрипты завязаны на рекламу?
                    • +1
                      старая версия, опять же причина обработка document.write — алгоритм ждет когда скрипт скажет закачался или ошибка и не дает последующим скриптам исполнится. Блокиратор рекламы убивает загрузку скрипта так что тот ничего не говорит (нет ни ошибок ни успешного сообщения) — соответственно алгоритм думает что загрузка в процессе, поэтому получился эффект заморозки.

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

  • 0
    напишите вторую статью
    дабы там подробней расписать все «вкусности» по возможности с примерами
    • +1
      если смогу, то на следующих выходных, по буднях занят по уши. Дальше будет интереснее — будет больше технических моментов реализации.
      • +1
        очень интересует, правда со стороны разраба:
        1) back/next ;)
        2) возможность индексация поисковыми роботами как на обычном сайте
        • +2
          будет вам правда :)
  • 0
    Полезная статья, в избранное! Спасибо автору.
  • +1
    а акселератор загрузки скриптов откуда? ;)
    • +1
      как откуда из головы :). допустим у вас на странице которую вы запрашиваете имеется внешних 5 скриптов, каждый последующий скрипт зависит от предыдущего. Как работает браузер? закачивает, первый — выполняет первый — закачивает второй — выполняет второй, и т.д.
      В Fullajax реализован алгоритм параллельной загрузки скриптов с последовательным их применением. Другими словами: мы начинаем закачивать все скрипты сразу параллельно, но выполняем их в соответствии с той последовательностью, с которой они прописаны на странице. Кстати еще одна из тем оптимизации ;).
      • +2
        черт, а я все надеялся, что YASS упомянешь :)
        • +1
          ну я в статье упомянул о YASS как одна из современных библиотек, но у нашей разработке мы его не используем, а относительно YASS + ускоритель скриптов — я явно чего-то упустил, скинь ссылочку где почитать об этом…
          • +1
            да, собственно, была статья про модульную загрузку Javascript-файлов
            habrahabr.ru/blogs/yass/49245/
            • +1
              а, ну это читал, очень интересно. Ваша статья (разработка) о загрузке по требованию. В нашем случае речь идет о другом типе оптимизации.
              • +1
                и там, и там — асинхронная «безопасная» загрузка скриптов. Я и подумал, что есть что-то общее :)
                • +1
                  ну да, значит у нас есть общее, процесс действительно можно назвать — «асинхронная безопасная загрузка»
  • 0
    надо было не с простого начинать(как ajax делать тут все и так знают), а с самого полезного )) как же сделать так чтобы поисковики… ну и т.д. ))

    Спасибо, скачал, вот изучаю…

    • 0
      порядок — весчь важная :), будет и про поисковики но в свою очередь, все постепенно
  • 0
    Глянул сайт Dream Travel — сделано круто технологически, но юзабилити даже не пахнет, пользоваться невозможно. ( Причем это касается как расположения элементов, так и их реакции на действия.
    • 0
      Еще раз убедился — хорошему программисту нужен хороший дизайнер.
      • –1
        согласен, это точно, а еще ему (программисту хорошему) не помешает хорошая зарплата и хороший руководитель :)
  • 0
    Надо бильдер.
    Всё же руками смотреть какой функции повредит удаление другой или нет дольше.
    Но возможно.
    Если к примеру надо пересобрать быстро, то сейчас этого не выйдет.
    Хотябы бильдер на руби или пхп.
    Тогда будет популярность проекта.
    • 0
      да, спасибо, совет в тему. будем думать в эту сторону.
  • 0
    Кстати, очень интересно как вы образовываете универсальные URL на сервере. Я так понимаю что host/path/node заменяется на host#/path/node или что-то подобное. А как быть с урлами когда обновляется сразу несколько элементов через аякс?
    • –1
      это предусмотрено, урлы формируются с метками блоков в которые они должны попадать, просто в причесанном виде этих меток не видно.

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