Проблемы в приложениях на основе Ajax - PullRequest
0 голосов
/ 04 мая 2010

Я очень заинтересован в разработке приложений на основе Ajax. Это загрузка почти всего содержимого приложения через XMLHttpRequest, а не только некоторые комбинации и виджеты. Но если я попытаюсь сделать это с нуля, вскоре я найду некоторые проблемы без простого решения. Интересно, есть ли какая-то инфраструктура (как на стороне клиента, так и на стороне сервера) для решения этих проблем. Насколько я знаю, нет (но я искал в основном в мире Java). Поэтому я серьезно думаю о создании своей собственной платформы, по крайней мере, для моих проектов.

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

Вот вопросы, о которых я подумал:

1 - JavaScript должен быть включен. Паранойя безопасности - не единственная проблема: многие мобильные устройства тоже не могут использовать приложение.

2 - Иногда вам нужно обновить более одного DIV (например, основной контент, меню и панировочные сухари).

3 - Неизвестный тип ответа: когда вы делаете Ajax-вызов, вы также устанавливаете функцию обратного вызова, обычно указывая, является ли ожидаемый ответ объектом javascript или в который DIV поместил результат. Но это происходит сбой, когда вы получаете ответ другого типа: например, когда сеанс истек, и пользователь должен снова войти в систему.

4 - Кнопки «Обновить», «Назад» и «Вперед» в браузере могут быть настоящей болью. Пользователь будет ожидать различного поведения в зависимости от ситуации.

5 - Когда поисковые системы индексируют сайт, переходите только по ссылкам. Таким образом, загрузка контента Ajax не будет «существовать» для тех, кто еще не знает об этом.

6 - пользователи могут попросить открыть ссылку в другом окне / вкладке.

7 - в адресной строке не отображается «настоящая» страница, на которой вы находитесь. Таким образом, вы не можете скопировать местоположение и отправить его другу или добавить страницу в закладки.

8 - Если вы хотите монетизировать сайт, вы можете разместить несколько рекламных объявлений. Поскольку вы не обновляете всю страницу и через некоторое время хотите изменить объявление, вам нужно обновить только тот DIV, в котором оно находится. Но это может привести к нарушению положений и условий вашего рекламного сервиса. Фактически, это может идти вразрез с AdSense TOS.

9 - Когда вы обновляете всю страницу, весь JavaScript «очищается». Но в вызовах Ajax все объекты JavaScript останутся.

10 - Вы не можете легко изменить свои свойства CSS.

Ответы [ 4 ]

1 голос
/ 04 мая 2010

Я думаю, что вы должны различать два сценария:

  1. Веб-приложение представляет собой реальное приложение для зарегистрированных пользователей (например, авторов блогов и сотрудников ...). В качестве основной технологии AJAX подходит, так как вы можете ожидать, что ваши пользователи будут выполнять ваши системные требования (достойный браузер, javascript).
  2. Веб-приложение - это обычный веб-сайт, доступный для всех. В этом случае AJAX как основная технология совершенно НЕ подходит, так как вы теряете посетителей, поисковые системы и т. Д. Всегда кодируйте веб-сайты, которые работают без излишних вещей, а затем улучшайте веб-сайт дополнительными модными вещами.

Итак, если ваше заявление относится к типу 1, ваши вопросы 1, 5 и 8 уже получены.

Вопрос 2: нет проблем. Javascript, управляющий вызовом AJAX, может делать с ответом все, что захочет. Разнесите его на куски и вставьте в DIV, как вы себя чувствуете.

Вопрос 3: так же, как 2: просто позаботьтесь об этих случаях в своем javascript.

Рядом с вопросами 4, 6 и 7: вы можете воспроизвести много нормального поведения «назад / вперед», сохранив состояние приложений в хэш фактического URL. Вы можете изменить хэш без перезагрузки страницы. Многие фреймворки javascript предлагают функции, делающие это еще более удобным (например, посмотрите историю dojo).

Вопрос 9: это правильно, но обычно это не должно быть большой проблемой, если только ваши сценарии не содержат ошибок.

Вопрос 10: можно! Сила javascript может помочь вам в этом, молодой падаван. Например, вставьте теги ссылок через JavaScript.

1 голос
/ 04 мая 2010
  1. http://icant.co.uk/articles/pragmatic-progressive-enhancement/#build
  2. Да. Вот почему вы следуете шаблону MVC, а не просто возвращаете кусок m arkup
  3. См. 2.
  4. http://developer.yahoo.com/yui/history/ или аналогичный
  5. См. 1.
  6. См. 1.
  7. Смотрите 4, но это несовершенно и почему Ajax подходит для веб-приложений, но плохо для веб-сайтов
  8. Вам нужно выбрать рекламный сервис, с которым вы можете работать
  9. См. 4.
  10. Почему бы и нет?
0 голосов
/ 04 мая 2010

Интересно, существует ли какая-либо инфраструктура (как на стороне клиента, так и на стороне сервера) для решения этой проблемы. Насколько я знаю, нет

Ты шутишь! Существует множество инфраструктур Java Ajax:

Верхняя часть списка Google для "Java AJAX Framework" была:

http://ajaxpatterns.org/Java_Ajax_Frameworks

0 голосов
/ 04 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...