插槽内容

Vue 实现了一套内容分发的 API,这套 API 的设计灵感源自 Web Components 规范草案,将 <slot> 元素作为承载分发内容的出口。

它允许你像这样合成组件:

  1. <navigation-link url="/profile">
  2. Your Profile
  3. </navigation-link>

然后你在 <navigation-link> 的模板中可能会写为:

  1. <a
  2. v-bind:href="url"
  3. class="nav-link"
  4. >
  5. <slot></slot>
  6. </a>

当组件渲染的时候,<slot></slot> 将会被替换为“Your Profile”。插槽内可以包含任何模板代码,包括 HTML:

  1. <navigation-link url="/profile">
  2. <!-- 添加一个 Font Awesome 图标 -->
  3. <span class="fa fa-user"></span>
  4. Your Profile
  5. </navigation-link>

甚至其它的组件:

  1. <navigation-link url="/profile">
  2. <!-- 添加一个图标的组件 -->
  3. <font-awesome-icon name="user"></font-awesome-icon>
  4. Your Profile
  5. </navigation-link>

如果 <navigation-link> 没有包含一个 <slot> 元素,则该组件起始标签和结束标签之间的任何内容都会被抛弃。