yii2 + angular

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

yii2 + angular

Сообщение Artikk »

Здравствуйте. В последнее время слышу, что многие используют yii2 для back и angular для front. Можете рассказать в чем преимущества? (быстрее работает?) и есть пара вопросов по этому поводу. Как angular вообще прикручивается к yii2? можете скинуть примеры или уроки? да и вообще, помимо angular... что еще используют?
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: yii2 + angular

Сообщение skynin »

Artikk писал(а): 2018.02.16, 13:53 В последнее время слышу, что многие используют yii2 для back и angular для front. Можете рассказать в чем преимущества?
Одностраничное приложение

Не всегда нужно чтобы весь сайт был одностратичником, а достаточно нескольких разделов. Например кабинет пользователя.
Artikk писал(а): 2018.02.16, 13:53 Как angular вообще прикручивается к yii2?
Прикручивается мимо yii2.
Попытки сделать виджеты наверняка есть, но думаю проще делать мимо.
Artikk писал(а): 2018.02.16, 13:53 можете скинуть примеры или уроки?
Не встречал. Да и не нужны они.
От Yii2 требуется:
- отдать html
- отдать данные, заинлайненные или rest'ом или graphql или еще каким xml-rpc.
- принять данные, или rest'ом или graphql или еще каким xml-rpc.

остальное обычная фронтенд разработка на js. с вебпаками и прочим.
Artikk писал(а): 2018.02.16, 13:53 да и вообще, помимо angular... что еще используют?
все что угодно.
React.js, Vue.js и т.д.

Что по проекту требуется, то и используют.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: yii2 + angular

Сообщение Artikk »

вопрос, если это одностраничное, для чего yii2 там вообще нужен, если ту же админку и на angular вроде можно сделать.. )
Вы писали:
Прикручивается мимо yii2.
Попытки сделать виджеты наверняка есть, но думаю проще делать мимо.

Код: Выделить всё

все что угодно.
React.js, Vue.js и т.д.
Где можно хотябы примеры проектов посмотретЬ, т.к. я даже не представляю как это делать.... что значит делать мимо?
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: yii2 + angular

Сообщение skynin »

Artikk писал(а): 2018.02.16, 16:05 Где можно хотябы примеры проектов посмотреть
Непонятно что вы хотите увидеть.

По тому как пишется фронтенд на React, Angular, Vue полно документации, видеоуроков, статей.
Artikk писал(а): 2018.02.16, 16:05 т.к. я даже не представляю как это делать....
Странный вопрос. А что там представлять.

Ну ок, чтобы представили

Возьмите какой-нибудь микро-фреймворк.
Например Slim
Добавьте к нему Plates
И напишите форму регистрации пользователя.

Затем, уберите Plates. И напишите REST для регистрации.
А саму форму напишите на React, Angular, Vue.
html для нее отдавайте статикой.
Artikk писал(а): 2018.02.16, 16:05 что значит делать мимо?
Не использовать виджеты Yii, подключать css и js без AssetBundle. Вот и будет мимо.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: yii2 + angular

Сообщение Artikk »

а какой плюс тогда от этого?) зачем так делать?)
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: yii2 + angular

Сообщение skynin »

Artikk писал(а): 2018.02.16, 20:22 а какой плюс тогда от этого?) зачем так делать?)
вы уже сделали на React, Angular, Vue форму регистрации?
когда сделаете - прикрутите ее к Yii2.
и все поймете.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2 + angular

Сообщение ElisDN »

Artikk писал(а): 2018.02.16, 20:22 а какой плюс тогда от этого?) зачем так делать?)
Для построения сложных интерактивных интерфейсов, где всё можно переключать/перетаскивать/скроллить в реальном времени. Целиком построенных на Ajax. Пример - почта Gmail. Плюс размещения верстки только в JavaScript - не нужно копипастить один и тот же HTML-код в JavaScript и PHP.
Artikk писал(а): 2018.02.16, 16:05 если это одностраничное, для чего yii2 там вообще нужен, если ту же админку и на angular вроде можно сделать.. )
Ну вот как раз на Angualar или Vue выводят всю вёрстку с анимациями (front) с подгрузкой и отправкой данных по Ajax.
А в PHP на сервере (back) делают только JSON API для этих Ajax-запросов.

Поэтому от Yii2 для этого достаточно оставить только контроллеры для JSON с валидацией и ActiveRecord. Остальное не использовать. Или взять лёгкий микрофреймворк без всего лишнего.
KonstantinDigit
Сообщения: 13
Зарегистрирован: 2019.06.06, 16:28

Re: yii2 + angular

Сообщение KonstantinDigit »

Всем Hello! Думал тему новую создать но вроде эта подходит, хотя... В кратце у меня такая ситуация, необходимо проект на yii2 + angularJS превратить в проект yii2 + Angular11 (на данный момент) + какое то длительное время AngularJS( с помощью специального модуля NgUpgrade- который позволяет модернизировать AngularJS до Angular без удаления AngularJS). Сейчас я в стадии понимания как вообще провернуть такую штуковину, так как по факту в приложении будут одновременно работать 3 фреймфорка и я не могу продумать как лучше сделать архитектуру? Обернуть Angularом свзяку из AngularJS + Yii2, либо внутри Yii2 создать папочку с angular. Все это дело осложняется тем что в проекте нет особо компонентного подхода для AngularJS,если говорить упрощенно все сделано так все js ники с AngularJS-ными контроллерами были положены в yii2->web->js. В файле layout->main.php (добавляется куча скриптов для каждого js-ного файла - контроллера), компонентного подхода нету (в одном файле js может быть до 1-30 angularJs контроллером). И из этих js-ных файлов пускаются запросы на yii2-шные контроллеры, которые обрабатывают их и возвращают данные. которые потом используются в тех же jsных файлах-контроллерах. Короче yii2 сильно связан с AngularJS и править пути в каждом файле чтобы все не поломать не особо представляется возможным. И вот в такой ситуации нужно обновить AngularJS связанный с yii2 до современного Angular11, причем так чтобы не дергать на данный момент старый код. Инструкций по обновлению AngularJS в Angular мало, точнее можно считать что их почти нет. Но тут ведь еще и yii2 добавлен. Вообщем если кто проходил подобное или имеет свое особенное мнение как начать и организовать хотя бы архитектуру (куда пихать Angular) пожалуйста помогите неопытному неофиту =). А да там еще webpack есть который некоторые jsные файлы в единый фаилы собирает. Только вот как его совместить с angularовским angular.cli (который так же имеет webpack под капотом).
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2 + angular

Сообщение ElisDN »

KonstantinDigit писал(а): 2021.04.29, 20:27 как начать и организовать хотя бы архитектуру (куда пихать Angular) пожалуйста помогите неопытному неофиту =)
Это не очень удачно, что всё смешано. В идеале делают структуру с двумя папками-проектами:

Код: Выделить всё

api/ # Yii2
    web/
    src/
    vendor/
    composer.json
    ...

frontend/ # Angular
    src/
    node_modules/
    package.json
    ...
где на Yii2 делают только API, а весь фронтенд на JS. Тогда таких проблем смешивания не возникает.
KonstantinDigit
Сообщения: 13
Зарегистрирован: 2019.06.06, 16:28

Re: yii2 + angular

Сообщение KonstantinDigit »

ElisDN писал(а): 2021.04.30, 13:52
KonstantinDigit писал(а): 2021.04.29, 20:27 как начать и организовать хотя бы архитектуру (куда пихать Angular) пожалуйста помогите неопытному неофиту =)
Это не очень удачно, что всё смешано. В идеале делают структуру с двумя папками-проектами:

Код: Выделить всё

api/ # Yii2
    web/
    src/
    vendor/
    composer.json
    ...

frontend/ # Angular
    src/
    node_modules/
    package.json
    ...
где на Yii2 делают только API, а весь фронтенд на JS. Тогда таких проблем смешивания не возникает.
Спасибо! А насчет angular.cli или webpack? с учетом что структура проекта сейчас выглядит примерно так

Код: Выделить всё

Папка с проектом на yii2 + angularJS.
[***************************************************
	yii2Project (тип basic)/
		assets - AppAsset.php для подключения ресурсов AngularJS не используется
		...
		controllers
		...
		web/js/ - здесь лежат все скрипты для angularJS 
		...
		views/layouts/main.php - сюда загружается angularJS 1.5.5 через https://ajax.googleapis.com... и 
		...					далее в теге head все контроллеры AngularJS,
		tsconfig.json - в проекте есть typescript правда пока что он просто условно. Банально крупные файлы
					с кучей контроллеров решили сделать с расширением .ts просто попробовать их
		...			скомпилировать через webpack и чтобы оно все запускалось (все это подготовка к
					переходу на ts)
		webpack.config.js - вебпак берет крупные файлы js/ts с кучей контроллеров AngularJS из web/js и 
						минифицирует их. И они подключаются в main.php
****************************************************]
А далее я правильно понимаю что вы рекомендуете сделать еще одну отдельную папку с Angular
[
	Angular - и начать модернизацию с помощью ngUpgrade связав Angular с 
		      AngularJS и его файлами yii2Project/web/js
]
Так же у Angular свой angular.cli тогда получается, я могу убрать webpack из папки с yii2, и 
настроить Angular.cli так чтобы он выполнял тоже самое что webpack. 
Я просто хочу убедиться что мыслю в нужном направлении, так как делаю это впервые 
и не знаю как лучше или хуже.
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2 + angular

Сообщение ElisDN »

KonstantinDigit писал(а): 2021.04.30, 18:13 Спасибо! А насчет angular.cli или webpack?
Документация советует стартовать новый проект с angular cli.
KonstantinDigit
Сообщения: 13
Зарегистрирован: 2019.06.06, 16:28

Re: yii2 + angular

Сообщение KonstantinDigit »

Понятно, а тут возник еще такой вопрос, а вообще как рекомендуется использовать yii2 в связке с Angular, что должно - что загружать. Ангуляр должен через REST дергать yii2 или yii2 сначала грузиться и потом как у меня в виде загружает AngularJS. В моем случае у меня через yii2шный web/index.php загружается сначала приложение yii2 и оно внутри своего основного шаблона в директории в views\layouts\main.php содержит код который на данный момент грузит AngularJS.Таким образом грузиться фронт, и внутри AngularJS посылает запросы на yii2 контроллеры. Но если с AngularJS это все работает, то как быть с Angular, ведь он вообще компилирует index.html, а не php. более того непонятно как его заставить компилировать index.html отдельно от сопутствующих служебных файлом чтобы поместить его в папку с шаблонами yii2, Я правильно понимаю что такой подход это утопия или так сделать все-таки возможно? Какой вообще должен быть подход?
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2 + angular

Сообщение ElisDN »

KonstantinDigit писал(а): 2021.05.28, 14:11 Какой вообще должен быть подход?
Как сказано выше, сделать отдельно папку frontend с Angular-проектом под ваш домен site.com и отдельную папку api с проектом на Yii2 с REST-контроллерами без шаблонизатора на поддомене api.site.com или префиксе site.com/api
Ответить