在 Vue2 中,组件模板必须有一个根节点包裹,因为 Vue2 的渲染机制需要一个单一的根节点作为入口,如果组件存在多个根节点,Vue2 无法确定哪一个是组件的主元素,会导致编译错误。例如路由加载失败。

在 Vue3 中引入了 Fragment 的概念,可以正常处理多个根节点,但 CSS 作用域(style scoped)和过渡动画(transition 组件)都是作用于组件的根元素,可能会产生问题。