У меня есть приложение symfony2, также поддерживающее REST.
Я предполагаю, что вы имеете в виду, что вы создали RESTful управляемый данными api в Symfony, который использует xml/json или какой-либо другой формат данных, не ориентированный на данные? Если я не смущен этим введением, поскольку все веб-сайты перекрываются с REST в общем виде.
Хотелось бы услышать, было бы неплохо перейти по кривой обучения angularjs или придерживаться jQuery и twig.
До сих пор самый простой подход (если вы уже знакомы с Symfony), чтобы использовать Twig, чтобы сделать ваши взгляды и поперчить его с JQuery для визуализации динамических/асинхронной стороны клиента. Угловая добавляет больше концептуальных слоев, чем Twig. Например, он дублирует управление моделью в клиенте. Twig имеет очень низкий импеданс для отображения представлений в модели, тогда как для углового представления потребуется гораздо больше кода для управления этим отображением. В некоторых случаях эти развязанные представления из данных могут быть огромным благом, если его правильно спроектировать. Это зависит от потребностей вашей команды.
Моя рекомендация заключалась в том, чтобы реализовать небольшой фрагмент вашей функциональности как в Twig, так и в Angular, и имейте в виду, что они имеют совершенно разные соображения времени исполнения и реальную механику. Самое важное отличие заключается в том, что угловые корабли, как только клиентская сторона, и Twig отправляются только на стороне сервера. Это принципиально разные понятия. Следует отметить, что нет причин, по которым вы не можете предварительно визуализировать Angular на сервере или сделать рендеринг браузера с помощью Twig. Это расширенные и нестандартные подходы, которые в настоящее время не являются родными функциями Twig или Angular, но вполне возможны в качестве шагов оптимизации.
«Счастье», которое вы относите к Угловому, в значительной степени является произвольной функцией конкретной сложности html + css в данном контексте и величиной разницы между изменениями состояния. Если вы ставите основную нагрузку на рендеринг изображений на сервере или клиенте, вы можете правильно оптимизировать это решение, чтобы быть ненавязчивым для вашего пользователя. Проблема в том, с какой стороны уравнения вы хотите применить свои усилия по оптимизации?
Похоже, что у ветви уже есть некоторые приятные черты, похожие на углы, такие как фильтры и прочее. Кроме того, если я использую угловое значение, это нарушит MVC Symfony, так как у меня, скорее всего, будет меньше просмотров.
В целом дизайн Angular и Symfony несовместим по аналогии, за исключением семантики их представления рендеринга, что может ввести вас в заблуждение. Лучший способ решить, что лучше для вас и вашей команды, - попробовать их обоих.
Вы не нарушаете MVC Symfony в малейшей степени, используя Angular. По сути, представление представляет собой просто представление данных в соответствии с форматом, поэтому, независимо от того, отправляет ли ваш сервер данные JSON на Angular или имеет Twig, визуализируйте HTML на сервере, который вы все еще используете «V» подхода Symfony к MVC.
С другой стороны, мне нравится отзывчивость углового, и это похоже на новую тенденцию. Можете ли вы перечислить некоторые плюсы и минусы в использовании углового в этой области?
Если ваш пользовательский интерфейс очень документ/гипертекст привода (другие слова прозрачности по вопросам поисковых систем для вас) и вы используете менее дюжины асинхронных звонков по всему сайту вы почти наверняка имеете тенденцию к веточке + JQuery.
Если ваши пользовательские интерфейсы требуют уровня сложности, приближающегося к «настольному» приложению, вы почти наверняка будете стремиться к угловому.
Многие приложения, появляющиеся на рынке, живут между двумя описанными сценариями. Чем ближе вы приблизитесь, тем более ясным станет ваше решение.
Единственное, что я могу сказать, это то, что если у вас есть какие-либо сомнения, вы, вероятно, захотите придерживаться twig/jquery, просто потому, что они очень хорошо поняты и проверены на практике и требуют намного меньше кривой обучения, если вы уже строите с Symfony.