Несколько приложений Laravel 5 и AngularJS

В настоящее время я работаю над проектом, в котором есть несколько слабосвязанных модулей (более 20), и я решил использовать Laravel 5 и AngularJ.
я использую йомен генератор для AngularJS.
Я не могу определиться со структурой приложения, в идеале я бы хотел, чтобы каждый подмодуль был отдельным приложением, так как разработчикам будет легко работать над отдельными приложениями независимо друг от друга.

mylab/
app/
Http/
Controllers/
SomeController.php # API's that will be used across all apps
...
public/
bower_components/
angular/
bootstrap/
scripts/
angular.Modules.js #custom modules to be used across all apps
..
resources/
views/
.. #landing page view

Sub-App1/
app/
Http/
Controllers/
SubApp1Controller   #sub-app1 specific API's
..
public/
bower_components/
repo1/ #specific to sub-app1
...
resources/
AngularApp1 #SPA for sub-app1
views/

Sub-App2/
app/
...

И для маршрутизации, я хотел бы что-то вроде:

http://mylabs                                   //login OR landing Page
http://mylabs/subapp/route1/123someid

Каков наилучший способ достичь этого в Laravel?

Является ли эта структура достаточно хорошей, масштабируемой, управляемой?

Если нет, то есть ли лучший способ добиться этого?

5

Решение

Для маршрутизации Laravel вы можете использовать что-то вроде этого:

Route::group(['prefix' => 'subapp1'], function()
{
Route::get('route1/{id}', 'SubApp1Controller@show');
});

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

Я бы предложил использовать одно приложение Laravel для обработки всех маршрутов с отдельным контроллером (или контроллерами) для каждого дополнительного приложения. Его будет проще поддерживать, и он по-прежнему позволяет разработчикам сохранять свои собственные файлы, чтобы они не конфликтовали друг с другом. Исключением будет routes.php, но вы можете определить маршруты заранее, чтобы разработчики не все редактировали его.

Я предпочитаю держать Angular отдельно от Laravel, помещая код Angular в общую папку, но это зависит от того, сколько вы планируете делать с Blade и Angular. Трудно сказать, не зная больше о ваших приложениях, но вы могли бы оставить большую часть работы в Angular, и Laravel просто отправил бы начальную страницу.

Это позволяет избежать конфликтов между Blade и Angular и не позволяет отделить приложение Angular от Laravel. Но если вы решите сохранить Angular в представлениях Laravel, обязательно позаботьтесь об этом. Несколько общих решений — изменить разделители с {{ }} или префикс Угловые выражения с символом @, например, так: @{{ user.email }} чтобы Блейд не разбирал их.

Вот как вы можете выложить структуру каталогов:

app/
Http/
Controllers/
AppBaseController.php # API's that will be used across all apps
SubApp1Controller.php # sub-app1 specific API's
SubApp2Controller.php # sub-app2 specific API's
...
public/
bower_components/
angular/
bootstrap/
scripts/
angular.Modules.js # custom modules to be used across all apps
AngularApp1/ # SPA for sub-app1
AngularApp2/ # SPA for sub-app2
...
resources/
views/
... # landing page view
sub-app1/
... # sub-app1 views
sub-app2/
... # sub-app2 views
6

Другие решения

Я понимаю модули как самостоятельную часть приложения. И приложение формируется разными модулями. Каждый модуль может иметь свою конфигурацию и маршрутизацию, которые могут быть переопределены в конфигурации приложения. Это может быть достигнуто с поставщиками.
Как структура файловой системы, я рекомендую прочитать две ссылки об организации вашего приложения по модульному принципу. Вот а также Вот.
Еще одна вещь — это использовать controllerAs и избегать использования области видимости в контроллере, поскольку область видимости исчезнет в будущих версиях angular.
Еще один ресурс гид по стилю

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector