Веб-приложение, над которым я работаю, имеет несколько довольно сложных и устойчивых элементов клиентского интерфейса. Я пытаюсь сохранить здравый смысл, организовав их в составные виджеты javascript. Некоторые из требований являются:Как организовать код для виджета javascript UI?
1) Некоторые из данных, необходимых для инициализации виджета должны исходить от сервера
2) Некоторые из данных исходят от клиента (на основании которого из списка элементов выбран)
3) состояние некоторых разделов виджета нужно помнить, когда она закрыта и вновь
4) состояние других разделов должно быть забыто и сброшено к исходному значению
5) страница имеет полностью сделать очень быстро, поэтому AJAX-вызовы необходимо свести к минимуму
Итак, на мой вопрос: как вы организуете код для этого виджета? В настоящее время у меня есть отправка HTML-кода для виджета с некоторыми данными (например, №1), заполненными на стороне сервера (чтобы избежать отправки данных через дополнительный вызов AJAX). Затем у меня есть куча кода jquery, который заполняет материал на стороне клиента специальным способом. И затем еще код, чтобы вернуть все обратно в желаемое состояние при втором вызове. Наверняка есть более декларативный способ сделать это?
Почему бы использовать AJAX для этого подхода слишком медленно? Я реализовал именно то, что вы описываете здесь, и мое невероятно быстро.Я также склонен строить свои объекты в JSON для более быстрого транзита и потому, что я могу быстро управлять ими в JS ... Имейте это в виду. – jcolebrand
@drachenstern, я склонен согласиться, но это зависит от количества данных, времени, необходимого для генерации данных, и производительности сети. Большинство моих вызовов AJAX настолько быстренько, что пользователи не заметят, если я обновляю данные каждый раз, когда это необходимо, но есть достаточно случаев, когда это происходит значительно медленнее, чем мне нужно решать в каждом конкретном случае. – mikerobi
Я хотел избежать последовательности: (1) запросить страницу с сервера, (2) запустить мой код document.onload, (3) решить, что мне нужно больше данных с сервера и сделать вызов AJAX. Шаг 3 - это потраченная впустую поездка туда и обратно на сервер, так как я мог бы отправить эти данные на шаге 1 (я знаю, что он понадобится клиенту). Итак, как бы вы это сделали? Вставить объект JSON где-нибудь в разметке и выловить его из DOM с помощью jquery? Или просто предварительно заполнить разметку данными? –