Использование фреймворков MVC для фронтенда и бэкэнда

Я немного запутался в том, как разрабатывать веб-приложение с использованием фреймворков как на интерфейсе (например, Angular), так и на сервере (например, Phalcon). В документации Phalcon есть такие биты, как:

<?php

echo "<h1>Hello!</h1>";

echo Phalcon\Tag::linkTo("signup", "Sign Up Here!");

Но разве я не буду использовать нотацию шаблонов Angular {{ }} для печати? Итак, если я использую Angular, действительно ли мне нужно использовать Phalcon, Laravel или любой другой PHP MVC?

Думаю, я пытаюсь спросить на самом базовом уровне: если я использую Angular, могу ли я просто использовать отдельные PHP-файлы на серверной части и не использовать PHP MVC?

(извините, я не знаю, как сформулировать этот вопрос, я могу отредактировать)


person CaptSaltyJack    schedule 09.10.2013    source источник
comment
отличный вопрос, особенно для любопытных, когда спрашивают, является ли интерфейс MVC или серверная часть?   -  person blamb    schedule 20.10.2015


Ответы (3)


Краткий ответ на ваш вопрос: да, вы можете просто использовать простой бэкэнд без mvc для своих угловых приложений. На самом деле, это хорошее дело.

Вы все еще можете использовать структуру MVC, если хотите, но динамического рендеринга данных в HTML на стороне сервера следует избегать (хотя есть некоторые исключения).

Я склонен рекомендовать использовать серверный язык для предоставления RESTful API, которые просто отвечают данными JSON, а затем использовать статические html/css/js (Angular) для обработки взаимодействия с пользователем, навигации, состояний просмотра, поиска данных и т. д.

person bendalton    schedule 09.10.2013

Вы можете использовать MVC как во внешнем интерфейсе (AngularJS), так и в бэкэнде. Как писал @bentaldon, у вас может быть API, который будет предлагать данные обратно в AngularJS.

Приложение API (бэкэнд) может легко иметь очень оптимизированную структуру MVC с данными рендеринга компонента View в формате, который вам нужен в вашем приложении AngularJS (скажем, JSON).

Если вы решите использовать серверную часть не в форме API, вы можете легко изменить нотацию шаблонов {{}} AngularJS, чтобы избежать коллизий.

Пример, который я могу вам привести, можно найти здесь:

https://github.com/niden/phalcon-angular-harryhogfootball

Одновременное использование AngularJS и Phalcon.

person Nikolaos Dimopoulos    schedule 10.10.2013
comment
Отсутствует URL в вашем сообщении? - person CaptSaltyJack; 10.10.2013
comment
Странный. Я добавил его в первую очередь, но он не появился. Исправлено сейчас. Спасибо за указатель - person Nikolaos Dimopoulos; 10.10.2013
comment
@nikolaos, вы затронули концепцию, частично пропущенную ответом Бендалтона (который перешел только к половине ответа mvc, где пользователь запросил mvc/mvc), и не получил за это кредита, я не хотел голосовать за вас. Вместо того, чтобы сказать «да», вы сделали это очень ясно, например. да, вы можете использовать ...... короче. Но поскольку вы не получили ни одного голоса, это может быть потому, что вы, возможно, захотите исправить свое использование слова «назад», может быть, изменить его на «вперед» или «к»? потому что я думаю, что вы ссылаетесь на представление, и читатель, вероятно, интерпретирует неправильное использование английского слова обратно в фактический конец. - person blamb; 20.10.2015

Полный ответ:

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

Если вы хотите иметь классное приложение ALL JS (без PHP), вы можете использовать что-то вроде Deployd в качестве внутреннего API/mongodb и интегрировать angular в стиле MVC. Если вы хотите MVC'итизировать внутреннюю структуру этого типа JS-приложения, вы можете сделать что-то вроде этого https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/ (посмотрите на часть Express.js app/views).

Я бы порекомендовал Express.js в качестве серверной среды и реализовал бы стиль MVC с помощью такой инструкции: http://briantford.com/blog/angular-express. Затем все сценарии связываются с папками MVC для внешнего интерфейса, который использует этот сервер express.js. Ваши представления в папку views, контроллер (маршруты) в папку controller и все ваши скрипты, составляющие CRUD или серверный API, которые взаимодействуют с вашим mongodb для извлечения данных из папки model. Это очень легко масштабируется. Если вам нужен Angular в этой настройке, вам следует следовать руководствам о том, как внедрить angular в express .

Если вы хотите использовать серверную часть PHP либо с шаблонным интерфейсом php, либо с угловым интерфейсом MVC, вы можете использовать что-то вроде фреймворка Symfony2, который является ВСЕМОГУЩИМ, сверхмощным, хорошо документированным и простым. Затем, когда вы создаете свои шаблоны (представления) с помощью Twig (движок шаблонов symfonys по умолчанию), вы можете либо кодировать свой html там, и вызывать свои php-переменные на этой странице, либо вы можете изменить его, как я упоминал, используя angular, затем просто позвоните и назовите это именно так, на ваш взгляд

{% verbatim %}
    { { variabileAngularjs } }
{% endverbatim %}   

И, если то, что вы изначально просили, используя отдельные PHP-файлы на бэкэнде, похоже на то, что вы называете «процедурным» кодированием, вы можете сделать это и объектно-ориентированным, но не уверен, что так, как вы думали, если вы переходите на объектно-ориентированный, тогда очень просто поместить модели в папку модели, а контроллер в папку контроллера, а затем вызвать его mvc, но если вы поместите всю свою функциональность в тот же метод PHP, например, проверку сообщения, перейдите в БД , синтаксический анализ данных из db и последующая отправка этого ответа внутри http-ответа вперед в представление звучит как неправильное использование технологий веб-разработки, потому что это вызывает серьезные проблемы с зависимостями, потому что вы не очень хорошо наблюдали бы «развязку», если бы вы это сделали это. Чтобы отделить его, вы удаляете метод, который выполняет вызов БД, и возвращаете его, затем у вас есть другой метод, который также может быть в другом файле, в папке контроллера, который вызывает этот метод и возвращает через http, например ответ http, ваше представление может вызвать это действие контроллера, спровоцировав ответ. Именно так MVC хочет это сделать.

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

person blamb    schedule 20.10.2015