多个Laravel 5和AngularJS应用程序

Swa*_*l.C 5 php angularjs angular-ui-router laravel-routing laravel-5

我目前正在开发一个项目,它有多个松耦合模块(20+),我决定选择Laravel 5和AngularJs.我正在为AngularJS 使用yeoman angularify生成器.我无法决定应用程序结构,理想情况下我希望每个子模块都是一个不同的应用程序,因为开发人员可以轻松地独立处理单独的应用程序.

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/
            ...
Run Code Online (Sandbox Code Playgroud)

对于路由,我想要像:

http://mylabs                                   //login OR landing Page
http://mylabs/subapp/route1/123someid
Run Code Online (Sandbox Code Playgroud)

在Laravel实现这一目标的最佳方法是什么?

这种结构是否足够好,可扩展,易于管理?

如果没有,有没有更好的方法来实现这一目标?

小智 6

对于Laravel路由,您可以使用以下内容:

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

您的解决方案可能是一个难以管理的道路.它在创建复杂性和重复性方面没有在功能方面为您带来太多收益.除了易于开发人员独立工作之外,我会确保你有充分的理由这样做,因为你仍然可以通过以下方法实现这一目标.

我建议使用单个Laravel应用程序来为每个子应用程序使用单独的控制器(或控制器)处理所有路由.它将更容易维护,并且仍然允许开发人员保留在他们自己的文件中,以便它们不会相互冲突.例外情况是routes.php,但您可以预先定义路由,以便开发人员不会全部编辑它.

我希望通过将Angular代码放在公共文件夹中来将Angular与Laravel分开,但这取决于你计划用Blade vs. Angular做多少.如果不了解更多有关您的应用程序的内容很难说,但您可以将大部分工作留在Angular中,Laravel只会发送初始页面.

这避免了Blade与Angular表达式的冲突,并使Angular应用程序与Laravel分离.但是如果你选择在Laravel视图中保留Angular,请确保以某种方式处理它.一些常见的解决方案是{{ }}使用@符号更改分隔符或使用@符号前缀Angular表达式,@{{ user.email }}以防止Blade解析它们.

以下是如何布局目录结构:

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
Run Code Online (Sandbox Code Playgroud)


Rau*_*cco 0

我将模块理解为应用程序的独立部分。并且应用程序由不同的模块组成。每个模块都可以拥有其配置和路由,这些配置和路由可以在应用程序的配置上覆盖。这可以通过提供商来实现。作为文件系统结构,我建议阅读这两个关于以模块化方式组织应用程序的链接(此处此处)。另一件事是使用controllerAs并避免在控制器中使用范围,因为范围将在未来版本的角度中消失。另一个资源是样式指南