VueJS:<template> vs <div> 或相关的用于条件渲染的分组元素

Posted

技术标签:

【中文标题】VueJS:<template> vs <div> 或相关的用于条件渲染的分组元素【英文标题】:VueJS: <template> vs <div> or related for grouping elements for conditional rendering 【发布时间】:2019-01-30 10:11:04 【问题描述】:

在 Vue.js 中,如果您想通过 v-if/v-else-if 指令有条件地渲染多个元素,您可以将它们包装在 &lt;template&gt; 标记中并将指令应用于 &lt;template&gt; 标记,如 here 所述。但是,您也可以对包装多个元素的 &lt;div&gt; 标记执行相同的操作。 使用&lt;template&gt; 优于&lt;div&gt; 或任何其他类似的原生HTML5 标记是否有任何明显的性能优势?

【问题讨论】:

【参考方案1】:

我怀疑是否存在性能变化,但一个很大的区别是&lt;template&gt; 节点没有出现在 DOM 中

这是一个重要的区别,尤其是在对作为其父节点唯一有效节点类型的子节点进行分组时,例如列表项、表格行等:

这是有效的:

<ul>
  <template v-if="something">
    <li>Text</li>
    <li>Text</li>
  </template>
</ul>

这不是:

<ul>
  <div v-if="something">
    <li>Text</li>
    <li>Text</li>
  </div>
</ul>

【讨论】:

啊,我明白了。有条件渲染列表的例子是一个很棒的例子!

以上是关于VueJS:<template> vs <div> 或相关的用于条件渲染的分组元素的主要内容,如果未能解决你的问题,请参考以下文章

<template /> 上的 Laravel Mix Vuejs 组件语法错误

vuejs template click怎么直接传递this

vuejs 数据绑定

vuejs中使用echarts

VueJS 获取数据作为对象

vuejs生命周期理解