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

如何正确挂载Vue3的In-DOM根组件模板?

Vue3 In-DOM Root Component Template 问题解决方案

问题原因

你的代码无法正常渲染,核心原因有两个:

  1. Vite默认使用Vue运行时版本:该版本不包含模板编译器,无法编译In-DOM中的HTML模板内容,导致根组件无法生成渲染内容,最终挂载后清空#app元素。
  2. 根组件配置未触发模板读取:即使使用完整版Vue,空根组件createApp({})在某些场景下需要显式配置,确保Vue读取挂载元素的innerHTML作为模板。

修复步骤

1. 切换到Vue完整版(含编译器)

在项目根目录创建或修改vite.config.js,配置别名指向Vue的完整版:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      'vue': 'vue/dist/vue.esm-bundler.js'
    }
  }
})

2. 修正main.js的根组件配置

两种可选写法,效果一致:

写法一:利用Vue自动读取挂载元素模板

保持根组件为空对象,Vue会自动将#app的innerHTML作为根模板:

import { createApp } from 'vue'
import './style.css'
import HelloWorld from './components/HelloWorld.vue'

const app = createApp({})

app.component('HelloWorld', HelloWorld)

app.mount('#app')

写法二:显式指定根模板

通过template选项明确指向#app元素,可读性更强:

import { createApp } from 'vue'
import './style.css'
import HelloWorld from './components/HelloWorld.vue'

const app = createApp({
  template: '#app'
})

app.component('HelloWorld', HelloWorld)

app.mount('#app')

验证效果

修改完成后重启Vite服务,#app内的HTML内容会被Vue编译为根组件模板,hello-world组件也会正常渲染。

内容的提问来源于stack exchange,提问作者Onki Hara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:40:29