Организация js-кода на странице
На клиенте нужно организовать сложное взаимодействие между элементами. Обычно я использую для работы с DOM jquery. Но порой код выглядит весьма уродливо и непонятно. Как правильно организовывать клиентский код, какие подходы можно для этого применять?
|
MVC - вряд ли что то придумаешь лучше.
Обычно всегда полезно отделять представление от логики. Представление размести в шаблоне, и используй шаблонизатор. Логику в контролёре. модели по вкусу, для сложного взаимодействия с сервером, или общих данных для нескольких контролёров. В остальных случаях модели чаще усложняют жизнь. К примеру модели полезны если у тебя есть два контролёра панель управления графиком, и график. Оба контролёра будут использовать общие данные, эти общие данные вполне разумно вынести ещё в одну сущность - модель, там же можно разместить методы для работы с этими данными (сохранение на сервер, загрузка с сервера, удаление данных, посдсчёт значений покаким нибудь формулам и т.д.)
// примерный вид возможного контролёра
controller.extend("horizont",{
// опции
options: {
greetings: "Hello"
},
// конструктор
init:function(el){
el.append("привет");
},
// нажали кнопку ok
"button#ok click":function(){
}
// нажали кнопку cancel
"button#cancel click":function(){
}
}
// создаём контроллёр как любой виджет.
$("#test").horizont({
greetings:"astala vista"
});
такими контролёрами можно контролировать как часть (вроде меню или слайдера), так и всю страницу. Или даже большое приложение, глобальный контролёр aplication может по необходимости подгружать по ajax страницы, на эти страницы он будет вешать контролёр page, page в свою очередь может повесить контролёры на элемены которые превратят их в слайдеры, карусели и другие динамические элементы. самым простым контролёром можно считать виджет из jquery ui, создаём мы его при помощи команды widget. К нему возможно есть смысл самому прикрутить шаблонизатор типа ejs или аналогичного. Есть и более серьёзные решения. Я уж наверное всех заколебал этой штукой, но напомню ещё раз есть фреймворк базирующийся на jQuery, позволяющий организовывать код в стиле mvc. http://www.javascriptmvc.com/ Другие mvc фреймворки вроде blackbone.js, не заточены под jQuery, но это не значит что их нельзя использовать в связке с jQuery. писать на jquery это не обязанность вместо него можно использоват extJs или dojo Инструменты для организации кода, в них уже существуют. |
DjDiablo,
Спасибо, буду врубаться. |
| Часовой пояс GMT +3, время: 10:31. |