Laravel App的结构(API,后台,前台)


Structure of Laravel App (API, Back office, Front office)

我需要帮助我的Laravel应用程序的结构。

我想要的基本上是这样的结构:

    API
  • <
  • 管理面板/gh>
  • 公共网站

我开始建立这个文件夹结构,我认为这是非常正确的:

app/
   Http/Controllers/
       API/
       Back/
       Front/
resources/
   assets/
       js/
          back/
          front/
       sass/
          back/
          front/
   views/
       back/
       front/

Elixir:我如何避免后端库或资产被包含在前端的代码,反之亦然运行gulp后?

Views:如何在Laravel视图中使用命名空间?例如,给定pages1views/front/中,这是对page2的一些扩展。我希望刀片在编译时自动在views/front目录内搜索page2(而不是在views/back中)。

Routes:如何匹配路由与控制器的命名空间?我知道我们可以做到

Route::group(['domain' => 'example.com'], function() {});

Route::group(['namespace' => 'Admin'], function() {});

但是如何将它们组合起来呢?

对于Elixir,您可以使用Gulp模块,然后根据您的需要使用mix变量来分离资产。在这个例子中,gulp将把script.jsscript2.js合并到一个最终文件public/backend/final.js中。

// backend assets
elixir(function(mix){
    mix.scripts([
        'js/back/script.js',
        'js/back/script2.js',
    ], 'public/backend/final.js', 'resources/assets');
    // here you can declare another group of assets using 'mix'
});

对于控制器命名空间,编辑app/Providers/RouteServiceProvider文件并声明每个命名空间为:

public function map(Router $router)
{
    // backend namespace
    $router->group(['namespace' => 'App'Http'Controllers'BackEnd'], function ($router) {
        require app_path('Http/routes-backend.php');
    });
    // frontend namespace
    $router->group(['namespace' => 'App'Http'Controllers'FrontEnd'], function ($router) {
        require app_path('Http/routes-frontend.php');
    });
    // api namespace
    $router->group(['namespace' => 'App'Http'Controllers'API'], function ($router) {
        require app_path('Http/routes-api.php');
    });
}
现在,创建三个文件:

  • app/Http/Routes -backend.php>后端路由
  • app/Http/Routes -frontend.php>前端路由
  • app/Http/Routes - API .php> API路由

例如,如果你需要声明一个新的后端控制器,你可以在app/Http/routes-backend.php:

详细说明。
Route::get('dashboard', 'DashboardController@show');

view :

如何在Laravel视图中使用名称空间?例如,views/front/blade-extending page2目录下的pages1会自动搜索view/front目录下的page2。

这是不可能的,没有显式引用,page1无法自动加载page2。使用@extends就足够了,我个人建议使用这种结构,因为你可以用更多的控制来跟踪你的视图。