AJAX - технология, которая перевернёт веб

Jul 29, 2007 18:50

Такой громкий заголовок аббревиатуре AJAX дал журнал Компьютерра. Однако, как говорится в их же статье:
AJAX расшифровывается как Asynchronous JavaScript + XML (асинхронный JavaScript+XML) и технологией в строгом смысле слова не является. Это просто аббревиатура, обозначающая подход к созданию веб-приложений...
В любом случае, подход достаточно ( Read more... )

будущее, достижения, web

Leave a comment

alex_executer July 30 2007, 00:37:01 UTC
А откуда немерянное усложнение работы?
Попробуйте готовые либы для работы: prototype.js, script.aculo.us и т.п.
Правильно написанное приложение переводится на аякс путем щелчка пальцами и десятка строк кода

Reply

vjoiller July 30 2007, 05:55:58 UTC
Это смотря какое приложение, что является "правильно написанным", и зависит от задач, которые ajax должен выполнять.

Где посмотреть такие правила, с использованием которых любое приложение можно перевести на ajax путем десятка строк? Я заинтересован :)

Reply

alex_executer July 30 2007, 16:05:39 UTC
Вот например, есть у меня сайт, работающий на смарти. Захотелось мне прикрутить "немножко аякса", а именно сделать так, что б при нажатии в браузере на название новости, новость открывалась в этом же окне без всяких перезагрузок страниц.
В коде добавляем:

if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && $_SERVER["HTTP_X_REQUESTED_WITH"] = "XMLHttpRequest"){
//Нормальный способ отображения страниц - все блоки.
$smarty->display('index.tpl');
else {

//Вернуть только центральный блок, который всегда хранится в переменной $PAGE
$smarty->display($smarty->_tpl_vars["PAGE"]);
}

К коду дописываем джаваскрипт:

function display(url){
var myAjax = new Ajax.Updater(
'content', //ид контейнера, в котором распологаются, в нажем случае, новости
url,
{
method: 'get',
});

return false;
}

и оформляем новости в виде:
{$news.title}Собственно, все ( ... )

Reply

alex_executer July 30 2007, 16:08:01 UTC
Естественно это "каркас". К которому прикручиваются рюшечки типа отображения "loading..." пока идет загрузка страницы, кеширование запросов/ответов и т.п.
Если у вас приложение основано на шаблонах реализвоать AJAX будет не так уж и сложно. По крайней мере не так, как вы это описали (:

P.S. Хотя еще несколько подводных камней есть.

Reply

alex_executer July 30 2007, 16:11:22 UTC
И еще замечание:
технология не "перевернет веб", а "переворачивет почти десять лет" (:
Повсеместного употребления не получила, т.к. все что происходит средствами джаваскрипта является тайной за семью печатями для поисковиков - они не индексируют аякс-сайты.
Именно поэтому, как вы могли заметить, в приведенном мной примере ссылки a href ведут на статические страницы (их с удовольствием съедять поисковики и посетители на старых браузерах), а метод onclick сработает для тех, у кого браузер новый и есть поддержка джаваскрипта.
Кстати, onclick можно повесить джаваскриптом для всех ссылок в блоке content, однако для данного примера усложнять не хотелось.

Reply

vjoiller July 30 2007, 20:11:08 UTC
Это замечание не мне, а Компьютерре :)

Reply

vjoiller July 30 2007, 20:37:20 UTC
Smarty не пользуемся и нет в нем необходимости. Он только усложняет как программирование, в частности восприятие кода, так и выполнение (память, процессорное время) ради одной бесполезной в большинстве случаев функции - шаблонного вывода.

Я всегда придерживался мнения, что программа должна наряду со своей функциональностью быть максимально простой и понятной, как говорится, с первого взгляда. Smarty этим требованиям не отвечает. К тому же у меня с ним были проблемы с совместимостью.

Поэтому, когда таких вот функций и возможностей, вроде новостей, должно быть много, + красивые рюшечки, да и вообще дохрена JS, который должен это все должным образом обрабатывать на клиенте, то переделать "простое" приложение под ajax становится затруднительным.

Reply

alex_executer July 31 2007, 11:30:06 UTC
Бесполезность шаблонного вывода это фикция. И размеры этой фикции покажет ближайшая смена дизайна, когда вам придется переписывать исходный код.
Да, смарти не идеален, есть шаблонизаторы и лучше. Но он делает свою работу: разделяет представление от логики, за что ему респект и уважуха.

С совместимостью в смарти проблем не видел, хотя поднимал под различными веб-сервереами и версиями РНР. Простота и понятность, с использованием шаблонизатора, как раз на порядок больше. Никогда не возникает вопрос "а где объявлена эта переменная, которая выводится в этом месте". При разработке несколькими людьми одного проекта это позволяет немного стандартизировать код.

Последний абзац - сплошное абстрагирование. Зачастую делая что-то средствами JS вы снимаете с себя работу по повторению того же в PHP. Ситуации, когда нужен функционал и там и там - редки, и обходятся как я показал вам на примере.

Reply

vjoiller July 31 2007, 13:51:50 UTC
И размеры этой фикции покажет ближайшая смена дизайна, когда вам придется переписывать исходный код.Ну это мне не в первой. Где-то я такое уже слышал. Но боюсь, это Вы написали не по адресу. Смена дизайна в моем случае происходит посредством изменения CSS, а в качестве "шаблонизатора" используется самая надежная схема header-body-footer. При структурных изменениях дизайна, изменения в коде - минимальны ( ... )

Reply


Leave a comment

Up