我继承了一个laravel代码库,它通过laravel-mix集成了一个vue应用程序(在resources / assets / js内)。我被要求用反应开发一些前端功能。我想知道我是否可以配置webpack.mix.js和laravel路由,以便可以将react应用程序集成到laravel应用程序中,而不会影响vue应用程序。
所以这就是我如何解决自己的问题,并成功整合了两个独立的反应应用程序,以及一个针对laravel后端的vue应用程序。
更新了我的webpack.mix.js
文件,如下所示:
mix
.react("resources/assets/js-calendar/app.js", "public/js-calendar")
.sass("resources/assets/sass-calendar/app.scss", "public/css-calendar")
.react("resources/assets/js/app.js", "public/js")
.sass("resources/assets/sass/app.scss", "public/css")
.js("resources/assets/js-vue/app.js", "public/js-vue")
.sass("resources/assets/sass-vue/app.scss", "public/css-vue");
我的resources/assets
文件夹的内容是:
├───js
│ └───components
├───js-calendar
│ └───components
├───js-vue
│ └───components
├───sass
├───sass-calendar
└───sass-vue
我的resources/views
文件夹中有以下三个刀片模板:
app.blade.php hello.blade.php welcome.blade.php
web.php文件的内容是:
Route::view('/calendar/{path?}', 'app');
Route::view('vue/{path?}', 'hello');
Route::view('/{path?}', 'welcome');
最后编译的css和js文件在刀片文件中链接,如下所示:
...
<link href="{{ asset('css-calendar/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app"></div>
<script src="{{ asset('js-calendar/app.js') }}"></script>
....
以上是app.blade.php
。对于hello.blade.php,css和js src链接分别是css-vue/app.js
和js-vue/app.js
。而对于welcome.blade.php
,src链接是css/app.css
和js/app.js
。
请注意yarn run dev
如何在不同的目标中生成相应的css和js文件:
/js-calendar/app.js 9.45 MB 0 [emitted] [big] /js-calendar/app
/js/app.js 2.14 MB 1 [emitted] [big] /js/app
/js-vue/app.js 1.43 MB 2 [emitted] [big] /js-vue/app
/css-calendar/app.css 219 kB 2 [emitted] /js-vue/app
/css/app.css 219 kB 2 [emitted] /js-vue/app
/css-vue/app.css 219 kB 2 [emitted] /js-vue/app
我有vue
和react
依赖项,他们的条目添加到package.json
。