You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel+Vite+Vue环境下Blade内容不渲染问题求助

问题分析:Laravel+Vite+Vue环境下Blade模板文本不渲染的问题

问题描述

搭建Laravel+Vite+Vue开发环境后,执行npm run dev命令,页面仅能显示Vue组件,Blade模板中的<p>Sample text</p>无法渲染显示。

原代码文件

index.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Laravel 9 with vue 3 vite</title>

</head>

<body>
    <div id="app">
        <calendar-component></calendar-component>
        <p>Sample text</p>
    </div>
    @vite('resources/js/app.js')
</body>

</html>

原app.js

import "./bootstrap";
import { createApp } from "vue";

import CalendarComponent from "./components/CalendarComponent.vue";

createApp(CalendarComponent).mount("#app");

问题根源

原app.js中直接将CalendarComponent作为根组件传入createApp(),挂载到#app容器时,Vue会完全替换掉#app容器内的所有原有DOM内容,导致Blade模板里的<p>Sample text</p>被覆盖,无法显示。

解决方法

要保留#app内的非Vue DOM元素,需将Vue组件注册到根实例中,而非用组件直接作为根应用。修正后的app.js写法如下:

修正后的app.js

import "./bootstrap";
import { createApp } from "vue";
import CalendarComponent from "./components/CalendarComponent.vue";

const app = createApp({
    components: {
        CalendarComponent,
    },
});

app.mount("#app");

此写法下,Vue会在#app容器内编译渲染指定的Vue组件标签,同时保留容器内的其他非Vue DOM元素(如<p>Sample text</p>),不会替换整个容器内容。

内容的提问来源于stack exchange,提问作者Łukasz Jóźwiak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:22:09