在前面设置laravel应用惯性的方法中,我可以调整'createInertiaApp函数中的resolve属性:
{
...,
resolve: name => import("./Pages/${name}"),
...
}
至
{
...,
resolve: name => {
const page = require("./Pages/${name}").default
if(!page.layout) {
page.layout = DefaultLayoutFile
}
},
...
}
允许我手动传递要在页面中使用的默认布局文件。
但是随着Vite成为默认的资产捆绑器,根据文档,我必须使用resolvePageComponent
函数,该函数将import.meta.glob
作为第二个参数,以指示Vite捆绑哪些文件。
这里的问题是导入从这个resolvePageComponent
返回,所以我不能像通常从require函数那样访问默认对象。
所以我一直无法将默认布局文件附加到导入的页面。
有人能找到解决这个问题的方法吗?
4条答案
按热度按时间xdyibdwo1#
假设您像这样导入默认布局文件(记住不要在导入中使用@,因为只有相对路径才能用于静态分析):
import DefaultLayoutFile from './Layouts/DefaultLayoutFile.vue'
您可以使用以下代码获取使用Inertia和Vite的默认布局:
[更新日期:2022年8月1日]
由于这仍在接收视图,我认为展示如何在Vite中导入
@
会很有用。在
vite.config.js
中的导入项下需要path
然后将
resolve
添加到下面的配置中:现在
@
将指向您的Laravel根目录,您可以从任何位置动态导入组件:import LayoutTop from '@/Layouts/LayoutTop.vue'
* 现在将指向 */resources/js/Layouts/LayoutTop.vue
请记住,导入Vue SFC文件时,Vite需要
.vue
扩展名。q5iwbnjs2#
已接受答案的异步等待版本
tv6aics13#
@residualflash添加条件同样有效:
wqlqzqxt4#
这是我使用vite with inertia preset的结果