Архитектура Ajax - MVC?Другое?

Можно сказать пользователям добавлять Ваш От адреса до их контактов, когда они завершают свой порядок, который, если они делают так, поможет много.

Иначе, я попытался бы получить журнал от некоторых Ваших пользователей. Иногда у них есть детали о том, почему это было отмечено как спам в заголовках сообщения, которое Вы могли использовать для тонкой настройки текста.

Другие вещи можно попробовать:

  • Помещенный Ваше название сайта или адрес в предмете
  • Сохраняют все ссылки в сообщении, указывающем на Ваш домен (и не email.com)
  • Помещенный адрес или другая контактная информация в электронном письме
5
задан thekevinscott 1 August 2009 в 13:37
поделиться

4 ответа

Я создал программу Javascript в стиле MVC. В комплекте с M и C. Возможно, я сделал неверный шаг, но в итоге я создал свою собственную библиотеку диспетчера событий. Я убедился, что разные уровни обмениваются данными только с использованием протокола сообщений, который может быть преобразован в чистые объекты JSON (хотя я на самом деле не выполняю этот этап перевода).

Таким образом, jquery живет в основном в V-части архитектуры MVC . На стороне M и C у меня есть в основном код, который может работать в автономной версии CLI spidermonkey или в серверной реализации javascript Rhino, если это необходимо. Таким образом, если позже требования изменятся, я могу запустить мои уровни M и C на стороне сервера, обмениваясь этими сообщениями json на сторону V в браузере. Однако, чтобы это изменить, потребуются только некоторые изменения в моем диспетчере сообщений. В будущем, если в браузерах появятся технологии однорангового стиля, я смогу запустить различные программы, например, в разных браузерах.

Однако в настоящий момент все три уровня работают в одном браузере. Диспетчер событий, созданный мной, поддерживает многоадресные сообщения, поэтому реализовать функцию отмены теперь будет так же просто, как создать новый объект, который просто прослушивает сообщения, которые необходимо отменить. Автосохранение состояния на сервер - аналогичный маневр. Я могу выполнять полную детальную отладку и профилирование внутри диспетчера событий. Я могу точно определить, как работает код, и как быстро, когда и где, и все это из этого центрального фрагмента кода.

Конечно, главный недостаток, с которым я столкнулся, - это то, что я не знаю » Я очень хорошо справился со сложностью этого дела. Для этого, если бы мне пришлось все это сделать, я бы очень внимательно изучил парадигму «функционального реагирования». Существует одна реализация этой парадигмы в javascript, которая называется flapjax. Я бы гарантировал, что уровень представления следовал этой модели выполнения, если бы не использовалась специально библиотека flapjax. (я не уверен, что flapjax сам по себе является таким отличным воплощением идеи, но сама идея важна).

Другой большой реализацией функционального реактивного кода является кварцевый композитор, который поставляется бесплатно с инструментами разработчика Apple (который бесплатны при покупке любого Mac). Если это доступно вам, внимательно посмотрите на это и на то, как это работает. (у него даже есть патч javascript, чтобы вы могли прототипировать свое приложение с предварительно созданным слоем представления)

Главный вывод от функциональной реактивной парадигмы - убедиться, что представление не поддерживает никаких состояний, кроме тот, который вы только что дали для отображения. Говоря более конкретными словами, я начал с сообщений типа «Добавить объект на экран» «удалить объект с экрана», а теперь я больше склоняюсь к «отображению этого списка объектов, и я позволяет вам найти наиболее эффективный способ перейти от текущего дисплея к тому, что я хочу, чтобы вы теперь отображали ». Это устранило целый ряд ошибок, связанных с небрежно управляемым состоянием.

Это также позволяет обойти еще одну проблему, с которой я столкнулся с ошибками, вызванными сообщениями, поступающими в неправильном порядке. Который' Это большая проблема, которую нужно решить, но вы можете обойти ее, просто отправив в одном большом пакете окончательное желаемое состояние, а не последовательность шагов, чтобы добраться до него.

В любом случае, это моя маленькая тирада. Дайте мне знать, если у вас возникнут дополнительные вопросы о моем военном опыте.

9
ответ дан 18 December 2019 в 06:51
поделиться

Рискуя быть недовольным, я бы предложил другой фреймворк, помимо JQuery, иначе вы рискуете достичь потолка производительности. Его плагины ala-mode также будут представлять небольшую проблему при попытке разделить вас M, V и C.

Dojo хорошо известен своими хранилищами данных для привязки к данным на стороне сервера с различными транспортными протоколами, и его объект ориентированная, быстрая система виджетов с подсветкой, которую можно легко расширить и настроить. У него есть стиль, который поможет вам создать чистый, хорошо разделенный код, хотя это не строго MVC. Это потребует небольшого дополнительного планирования.

У Dojo более крутая кривая обучения, чем у JQuery.

Более того, к вашему вопросу, вызовы AJAX и объект (или хранилище данных), который хранит и запрашивает эти данные, будут вашей моделью. Виджеты и CSS будут вашим представлением. А Контроллер в основном будет кодом вашего приложения, который связывает все это вместе.

Чтобы держать их отдельно, я бы рекомендовал слабосвязанную систему, управляемую событиями. Старайтесь как можно реже обращаться к объектам напрямую, сохраняя их «черным ящиком» и получая данные через настраиваемые события или публикации / под-темы.

6
ответ дан 18 December 2019 в 06:51
поделиться

Существует несколько фреймворков JavaScript MVC, у этой очевидное название: http://javascriptmvc.com/

1
ответ дан 18 December 2019 в 06:51
поделиться

JavaScriptMVC (javascriptmvc.com) - отличный выбор для организации и разработки крупномасштабных JS-приложений.

Архитектурный дизайн очень практичен. Есть 4 вещи, которые вы когда-либо будете делать с помощью JavaScript:

  1. Ответить на событие
  2. Запросить данные / Управление службами (Ajax)
  3. Добавить информацию о домене в ответ ajax.
  4. Обновление DOM

JMVC разделяет их на модель, представление, шаблон контроллера.

Первое и, вероятно, самое важное преимущество - это контроллер. Контроллеры используют делегирование событий, поэтому вместо присоединения событий вы просто создаете правила для своей страницы. Они также используют имя контроллера, чтобы ограничить объем работы контроллера. Это делает ваш код детерминированным, то есть если вы видите, что событие происходит в '#todos' вы знаете, что должен быть контроллер задач.

$.Controller.extend('TodosController',{
   'click' : function(el, ev){ ... },
   '.delete mouseover': function(el, ev){ ...}
   '.drag draginit' : function(el, ev, drag){ ...}
})

Затем идет модель. JMVC предоставляет мощный класс и базовую модель, которая позволяет быстро организовать функциональность Ajax (№2) и обернуть данные специфичными для домена функциональными возможностями (№3). По завершении вы можете использовать модели из вашего контроллера, например:

Todo.findAll ({after: new Date ()}, myCallbackFunction);

Наконец, когда ваши задачи вернутся, вы должны отобразить их (# 4 ). Здесь вы используете представление JMVC.

'.show click' : function(el, ev){ 
   Todo.findAll({after: new Date()}, this.callback('list'));
},
list : function(todos){
   $('#todos').html( this.view(todos));
}

В «views / todos / list.ejs»

<% for(var i =0; i < this.length; i++){ %>
   <label><%= this[i].description %></label>
<%}%>

JMVC предоставляет гораздо больше, чем просто архитектуру. Он поможет вам в любой части цикла разработки с:

  • генераторами кода
  • интегрированным браузером, Selenium и тестированием Rhino
  • документацией
  • сжатием скриптов
  • отчетами об ошибках
4
ответ дан 18 December 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: