如何在两个React项目中使用一个Laravel实例

时间:2017-10-03 16:08:04

标签: php reactjs laravel-5 laravel-5.5

我有两个由create-react-app工具包创建的反应项目,都将使用相同的数据库和一些共享模型。对于后端,我创建了一个Laravel项目,并在其公共目录中放置了React项目:

--Laravel project
 |-- app
 |-- bootstarp
 ...
 |-- public
   |-- frontend (react app)
   |-- panel (react app)
   |-- index.php (Laravel's index)
 ...
 |-- vendor
 |-- .env

由于我将仅使用Laravel用于REST api,我已经设置了3个域,如:

frontend.local
panel.frontend.local
api.frontend.local

这样做的原因是,我不想为每个项目重新创建数据库或共享模型,现在一切都很好。我可以访问项目,我也可以发送api请求。所以我的问题是:这种做法好吗?如果不是,我怎么能为两个反应应用程序提供一个Laravel应用程序实例。

1 个答案:

答案 0 :(得分:0)

它可能来晚了,但我希望我按照这个过程解决了它。

  1. 为每个域创建一个 blabe 视图。即(frontend.blade.php,panel.blabe.php)在您的视图文件夹中。
  2. cd 进入 Laravel 包中的资源文件夹,并使用 npx create-react-app panel 仅对面板执行新的 react 安装,并使用 laravel 命令对 php artisan ui react 进行反应。有了这个,我们现在在一个 Laravel 中有两个 React 应用程序。您的资源文件夹现在应该有一个 js 文件夹和一个面板文件夹。
  3. 转到您的公共目录并分别创建两个文件夹 frontend 和 panel
  4. 转到 Laravel 根目录中的 webpack.mix.js 文件并添加这行代码 mix.react('resources/js/app.js', 'public/frontend/js') .react('resources/panel/src/index.js', 'public/panel/js') .sourceMaps();
  5. 现在返回到您的刀片模板并将每个 javascript 调用到正文中,即
    <body>
        <div id="root"></div>
        <script src="{{ asset('panel/js/app.js') }}"></script>
    </body>

对于面板,以及

    <body>
        <div id="root"></div>
        <script src="{{ asset('frontend/js/app.js') }}"></script>
    </body>

用于前端。

  1. 最后使用每个独立的路由返回每个视图页面并运行 npm run watch。您可以使用 laravel mix 文档阅读更多内容。