Подтвердить что ты не робот

Как объединить JMVC (javascript-mvc) и серверную часть MVC вместе

Я спросил этот вопрос за несколько дней до этого, и никто не ответил на него.

Я тоже спросил его в forum.javascriptMVC.com, и теперь у меня есть ответ, однако мне нужно немного больше идеи.

Вопрос:

I read javascriptMVC documents and I loved it. 
But I don't know how to use it in a large scale project.

Я думаю, что на стороне сервера необходима структура MVC или может очень помочь. И я работал с фреймворками на стороне сервера.

Я смущен, мое понимание проектов JavascriptMVC заключается в том, что они обрабатывают события на стороне клиента в событиях захвата браузера, выполняют запросы AJAX, управляют ответами/данными с сервера, а также отображают их пользователю в графическом интерфейсе.

Я знаю, что в проектах PHP MVC у нас также есть контроллеры (и действия), что любая из них является отдельной страницей с одной точкой входа, я хочу сказать, что эти страницы являются целыми HTTP-запросами.

Я думаю, что сочетание этих двух фреймворков будет состоять из одиночных или нескольких тяжелых файлов (включая js, css, imgs и т.д.), которые загружаются и управляются другой библиотекой Javascript, такой как кража .js. Теперь пользователь может работать с сайтом и его действиями (как событиями), которые приводят к запуску js-функций, которые могут что-то изменить в пользовательском интерфейсе или вызвать запрос AJAX, как в Yahoo Mail, где большинство вещей происходит на одной странице.

Итак, как это повлияет на дизайн контроллеров и действий в PHP? Я имею в виду, что обычно в PHP MVC-системах много контроллеров и действий означает много страниц. Я думаю, из-за AJAX количество контроллеров и действий должно быть на самом деле меньше. Я также думаю, что из-за JMVC большинство контроллеров (и действий) должны обращаться к AJAX-респондентам, однако как обрабатывать макеты и представления в этом контексте?

Наконец

  • Я хочу знать о различных аспектах использования этого метода (JMVC + MVC). (Я использую Yii в качестве моей серверной структуры MVC и JavascriptMVC в качестве MVC на стороне клиента).
  • Я также хочу знать об управлении данными на стороне клиента.
  • Я хотел бы понять, как можно использовать AJAX и веб-сокеты, где мы можем использовать AJAX и где мы можем использовать websockets?.
  • Я хочу понять о локальном хранилище, как мы можем использовать его для имитации управления данными страницы и, возможно, кэширования, как мы можем кэшировать данные, поступающие с сервера как JSON в виде страницы? Я работаю над очень крупным проектом, и я хочу, чтобы его фундамент был очень сильным.
4b9b3361

Ответ 1

Скажите, что вы создали JMVC-структуру, где

  • Модель получает данные с сервера с использованием запроса AJAX - ожидая результатов JSON.
  • Представление не полагается на сервер, для большей части обеспечения необработанного HTML.
  • Контроллеры не полагаются на сервер, поскольку они больше всего обслуживают файлы JS.

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

Теперь давайте посмотрим, как определить серверную структуру. Как я вижу, у нас есть несколько вариантов, все они довольно похожи, хотя и несколько разные (все возвращаются в формате JSON):

  • Полноценный MVC, такой как cakePHP
  • Пользовательская реализация
  • Реализация WebService

Лично я бы использовал WebService, и у меня уже есть. Вернее, я использовал веб-сервис JSON-RPC WebService на основе WebSocket. Использование полнофункционального MVC будет иметь недостатки в ремонтопригодности и, что немаловажно, нагрузке на сервер. Но это очень возможно, просто реализуйте представление, которое форматирует страницу как JSON...

Создание JMVC-клиента, на мой взгляд, не означает, что он не может запрашивать новый HTML-код с сервера. Но это означает, что запрошенный HTML должен быть свободен от данных, кроме метаданных, Java-View должен знать, куда помещать полученные данные, например WebService.

Таким образом, главная страница в JMVC может содержать только один

<div id=content></div>

и щелчки меню могут извлекать подстраницу с сервера и загружать содержимое в content. Затем загруженный контент может содержать еще несколько javascript, который запускает запросы WebService для получения данных с сервера, для отображения в пустых папках, которые он, в свою очередь, содержит.

Ответ 2

Сначала проверьте https://stackoverflow.com/a/4458566/718224, после чего вы можете двигаться вперед.


Попробуйте это (от fooobar.com/questions/407827/...)

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

Ключ просто убедитесь, что вы хорошо организовываете свой бэкэнд-код, иначе вы получите монолитную и/или трудноподдерживаемую базу кода.

Представления на стороне сервера будут содержать ваш HTML и любой JavaScript, которые могут или не могут отправлять запросы на сервер. Это предполагает, что вы на самом деле используете PHP для создания страниц, к которым пользователь переходит.

Если у вас есть статическая страница html, которая сама построена с использованием запросов AJAX, вам может вообще не понадобиться просматривать серверные представления. Ваши контроллеры, скорее всего, будут выводить данные JSON. Если это так, это не делает модели и контроллеры менее полезными.


Попробуйте это (от fooobar.com/questions/407827/...)

Если вы используете какую-либо из основных фреймворков PHP (CakePHP, Code Igniter, Symfony и т.д.), вы уже используете MVC. Если ваша логика на стороне сервера более сложна, чем несколько действительно простых сценариев, чем вы, вероятно, должны использовать одну из перечисленных инфраструктур, используя MVC на сервере и клиенте.

Многие (большинство?) более крупных веб-приложений, создаваемых сегодня, продвигаются к использованию структуры MVC как для клиентского, так и для серверного кода приложения. Это фантастический шаблон для разделения проблем для многих крупных приложений, особенно приложений сервера запросов и ответов и управляемых событиями приложений для браузера.


Попробуйте это (от fooobar.com/questions/407827/...)

Backbone.js подключает ваше приложение через интерфейс RESTful JSON. Я честно считаю, что он прекрасно работает в сочетании с MVC-каркасом. Если вы создаете RESTful API, вы можете легко управлять сервером CRUD-серверами. Весь ваш серверный код будет отвечать за сохранение и отправку объектов JSON в Backbone.js. Тогда пусть большая часть вашей логики и магии произойдет в рамках Backbone.js.


Попробуйте это (от fooobar.com/questions/407828/...)

Во-первых, структура MVC на стороне клиента, например Backbone, предназначена не только для приложений с одной страницей. Вы также можете использовать его, чтобы добавить богатое взаимодействие к одному или многим представлениям более традиционного приложения. Они просто предоставляют структуру и абстракции данных на клиенте.

Затем эти клиентские фреймворки разработаны специально для работы с вашими внешними инфраструктурами MVC. Backbone.js(так как вы специально отметили его) модели и коллекции работают с службами REST. Они будут разговаривать с помощью GET/POST/PUT/DELETE-глаголов и в конечном итоге связываться с вашими контроллерами на задней панели, когда они делают асинхронные запросы.

В случае Backbone, он говорит JSON вместо HTML. В случае с Rails это действительно легко обрабатывается в контроллере. Если запрос является HTML-кодом, вы возвращаете представление как HTML. Если это запрос JSON (*.json или Content-type), тогда контроллер возвращает JSON-представление данных. Я предполагаю, что в Django так же легко, как и в Rails, чтобы один и тот же контроллер отвечал на несколько запросов контента (HTML, XML, JSON и т.д.)

может помочь вам.

Ответ 3

веб-приложения на стороне клиента и веб-страницы с богатой клиентской частью часто используют jmvc backbones и т.д., и в этом случае, если js-библиотеки и технологии HTML5, такие как webstorage, у вас может быть больше приложений, таких как веб-сайты, которые все все происходит на стороне клиента, например, управление шаблонами и т.д., и просто мы получаем запрос/ответ на серверы для получения/установки данных или обновления. и abput первый раздел, они правы, сайт jmvc больше похож на веб-сайты на одном сайте. т.е. hotmail yahoo и т.д.