Laravel 9 Vue 3 惯性项目
P粉347804896
2023-08-28 19:25:31
<p>我正在使用 Laravel 和 Vue.js 以及 vite 构建一个 SPA,并且我还有另一个使用 Laravel Breeze 和 Inertia js 的 CMS 项目。如何将这两个项目合并为一个?所以我可以有一个带有 CMS 的 SPA 项目,就像一个管理页面,你可以通过路由进行设置。
这可能吗?</p>
<p>这是我的 CMS 项目中的 app.js</p>
<pre class="brush:php;toolbar:false;">import '../css/app.css';
import { createApp, h } from 'vue';
import { createInertiaApp } from '@inertiajs/vue3';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m';
const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel';
createInertiaApp({
title: (title) => `${title} - ${appName}`,
resolve: (name) => resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')),
setup({ el, App, props, plugin }) {
return createApp({ render: () => h(App, props) })
.use(plugin)
.use(ZiggyVue, Ziggy)
.mount(el);
},
progress: {
color: '#4B5563',
},
});</pre>
<p>这是我的 SPA 项目中的 app.js</p>
<pre class="brush:php;toolbar:false;">import '../css/navbar.css';
import '../css/home.css';
import '../css/kenapa.css';
import '../css/ceritakami.css';
import '../css/karir.css';
import '../css/lowongan.css';
import '../css/media.css';
import '../css/gabung.css';
import '../css/mitra.css';
import '../css/download.css';
import '../css/footer.css';
import { createApp } from 'vue';
import App from './layouts/app.vue';
createApp(App).mount('#app');</pre>
<p>我尝试将页面复制到 CMS 中,反之亦然,但它总是给我错误。</p>
<p>我是一个初学者,我只是无法利用惯性来理解它,因为在我的 SPA 项目中,我使用 App.vue 作为布局来调用其他页面,如下所示:</p>
<pre class="brush:php;toolbar:false;"><NavbarVue/>
<Home/>
<Kenapa/>
<Cerita/>
<Karir/>
<Lowongan/>
<Media/>
<Gabung/>
<Mitra/>
<Download/>
<Footer/>
</template>
<script setup lang="ts">
import NavbarVue from '../components/Navbar.vue';
import Home from '../pages/Home.vue';
import Media from '../pages/Media.vue';
import Kenapa from '../pages/Kenapa.vue';
import Cerita from '../pages/Cerita.vue';
import Lowongan from '../pages/Lowongan.vue';
import Karir from '../pages/Karir.vue';
import Gabung from '../pages/Gabung.vue';
import Mitra from '../pages/Mitra.vue';
import Download from '../pages/Download.vue';
import Footer from '../components/Footer.vue';
</script></pre>
<p>但是在惯性中我无法做到这一点,有人可以启发我吗?</p>
迁移
创建一个新的 Laravel 9 项目,并按照说明安装 Breeze w/ Inertia nad Vue。
然后,您将把 *.vue 文件移至新项目并适当地解析它们。
例如,您可以通过 Spa 中的 Axios 调用获取数据。使用 Inertia,您可以直接从控制器传递数据。
此外,您必须将控制器和所有相关的 PHP 文件导入到新项目中并解析它们以与 Inertia 设计结构保持一致。
测试
如果您还没有这样做,我强烈建议您开始使用 PHPUnit 进行测试。经过适当测试的代码可以使将文件从一个存储库迁移到另一个存储库时不再那么麻烦。
结论
总的来说,这将是一个庞大的项目,可能需要几个月的时间。但是,如果您打算将两个完全不同的项目合并为一个,那么复杂性将需要它,特别是如果两个项目都没有经过测试。