另一种方法是使用<template> tags 而不是<script type="text/x-template">:
<template id="my-component-template">
<p>Hello world.</p>
</template>
浏览器不会呈现 <template> 标签,但 Prettier 会识别并将其格式化为常规 HTML。
这不应与 <template> 标签通常用于在 Vue 指令中包装多个元素(v-if 和 v-for)相混淆。事实上,您可以将两者混合使用:
<template id="my-component-template">
<div class="my-component">
<template v-if="sayHello">
<div>Hello</div>
<div>world!</div>
</template>
<div v-else>Good bye</div>
</div>
</template>
最外层的<template> 用作Vue 模板的容器,而最内层的<template> 用作控制流。
(顺便说一下,这类似于Single File Components 的组织方式。)
注意事项
浏览器会将<template> 标记的内容解析为常规HTML 标记,并尝试纠正“坏”HTML。所以这个:
<template id="my-component-template">
<table>
<another-component></another-component>
</table>
</template>
...将“更正”为:
<template id="my-component-template">
<another-component></another-component>
<table></table>
</template>
有关详细信息,请查看官方 Vue 文档中的DOM Template Parsing Caveats(或v2 docs)。