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

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

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

> API
>管理员面板
>公共网站

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

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

问题

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

视图:如何在Laravel视图中使用命名空间?例如,给定views / front /中的pages1,这是extending一些page2.我希望Blade在编译时自动搜索view2内部的view / front目录(例如,不在views / back中).

路由:如何将路由与Controller的命名空间进行匹配?我知道我们能做到

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

并且

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

但如何将它们结合起来呢?

解决方法:

对于Elixir,您可以使用Gulp模块,然后根据需要使用mix变量来分隔资产.在这个例子中,gulp会将script.js和script2.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');

最后是观点:

How to use namespaces in Laravel views ? For example, pages1 in views/front/ blade-extending page2 will automatically search page2 inside view/front directory.

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...