Vue.js 中的 DOM 模板到底是什么?

mls*_*lst 20 html javascript vue.js

我在 Vue 文档中找不到 的确切定义Dom template,但我在几个地方看到它被提到,例如这里: https: //v3.vuejs.org/style-guide/#self-ending-components-strongly-recommended

那么 DOM 模板到底是什么?这是 Vue 的概念还是更通用的概念(例如某些规范中定义的 HTML 概念)?它们只是<template>Vue 可以附加到外部标签的 HTML 元素,还是也可以是内部<template>标签?欢迎举例。

ton*_*y19 28

在 Vue 上下文中,“DOM 模板”(在 Vue 文档的其余部分中通常称为“DOM 内模板”)指的是文档 body/head 中指定的组件标记,而不是字符串模板SFC 模板

虽然 DOM 模板包含<script type="text/html"><template>文档中,但这两个标记(以及字符串模板和 SFC 模板)不受已知DOM 模板解析警告的约束,因为它们是惰性的。

DOM 模板

DOM 内模板:

// index.html
<body>
  <div id="app">
    <ul>
      <li v-for="i in 5">{{ i }}</li>
    </ul>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

演示

DOM 内模板<script type="text/html">

// index.html
<body>
  <script type="text/html" id="my-comp-template">
    <ul>
      <li v-for="i in 5">{{ i }}</li>
    </ul>
  </script>

  <div id="app">
    <my-comp></my-comp>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

演示

DOM 内模板<template>

// index.html
<body>
  <template id="my-comp-template">
    <ul>
      <li v-for="i in 5">{{ i }}</li>
    </ul>
  </template>

  <div id="app">
    <my-comp></my-comp>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

演示

字符串模板

// MyComponent.js
Vue.component('my-comp', {
  template: `<ul>
               <li v-for="i in 5">{{ i }}</li>
             </ul>`
})
Run Code Online (Sandbox Code Playgroud)

演示

证监会模板

// MyComponent.vue
<template>
  <ul>
    <li v-for="i in 5">{{ i }}</li>
  </ul>
</template>
Run Code Online (Sandbox Code Playgroud)

演示