Идеология
Идеология SpotLight заключается в action'ах которые обновляют только малую часть страницы. Чем меньше действий делает action на пользовательской стороне, тем лучше, тем легче их разграничивать и управлять ими. Еще одним пунктом (не обязательным) идеологии является количество страниц (имеется ввиду физических (html, php)). Желательно, чем меньше тем лучше, а еще лучше одна страница (шаблон) над которой будут выполняться все манипуляции. Конечно, правила существуют для того, что бы их нарушать, но все же.
Почему именно так, да потому что вся соль заключается в двух вещах:
- ajax
- чистота кода
Все построено на использовании аякса (Вы конечно можете писать и классические веб-приложения). Почему action'ы надо делать атомарными: они меняют только то, что знают и не должны лезть не в свою часть приложения. Таким образом у нас наберется некоторое количество действий которые (как хотелось бы являются максимально независимыми) и вот тогда мы можем использовать главный козырь SpotLight.
Ведь суть не во фреймворке, а в способе мышления и методе разработки.
Козырем является всего один метод который делает всю погоду со стороны сервера. Пример:
есть аяксовое действие - оно возвращает маленький (а может и не очень) кусочек данных и меняет только один div на странице. Есть второе похожее на это, оно меняет второй div. Так вот, если вдруг у клиента не включен JavaScript или это бот который его не понимает, то в ответ на запрос он получит или xml или json или просто html код, который он, в принципе законно, посчитает не валидным (и в случае с ботом Ваш PR вряд ли будет расти).
Мы плавно подошли к проблеме, теперь о том как от этого избавиться. Мы уже говорили, что действия должны быть как можно более независимыми. Теперь мы можем из одного вызывать другое и так далее. Но что это нам даст - в принципе ничего хорошего пока мы не определим вид запроса.
Если пришел XMLHTTPRequest - то возвращаем только те данные которые уготовлены аяксовому действию. Ежели в это действие пришел запрос не XMLHTTPRequest, то вызывается специально описанный метод noAjax(); в нем Вы описываете вызовы других взаимосвязанных действий который окончательно заполняют страницу данными. И в последнем случае вся страница генерируется на сервере и возвращается клиенту. В первом же случае возвращается только xml понятный ядру, что бы на клиенте грамотно с ним разобраться.
В принципе коряво и не понятно, но все же как смог так и объяснил.
Насчет чистоты кода, она появится тогда, когда будет как можно меньше зависимостей между действиями ну и конечно у самого программиста руки из правильного места растут. )
