和 HTML 元素一样,我们经常需要向一个组件传递内容,像这样:
<alert-box> Something bad happened. </alert-box>
可能会渲染出这样的效果:

幸好,Vue 自定义的 <slot> 元素让这变得非常简单:
Vue.component('alert-box', {
   template: `
       <div class="demo-alert-box">
           <strong>Error!</strong>
           <slot></slot>
       </div>
   `
})如你所见,我们只要在需要的地方加入插槽(slot)就行了 —— 就这么简单!
<html>
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Vue</title>
   <!-- 使用 CDN 引入 Vue 库 -->
   <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> -->
   <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.9/vue.js"></script>
</head>
<body>
   <div id="app">
       <alert-box>Something bad happened.</alert-box>
       <alert-box>
           <span style="color:red;">Something bad happened.</span>
       </alert-box>
   </div>
   <script type="text/javascript">
       // 定义文章相组件
       Vue.component('alert-box', {
           template: `
               <div>
                   <strong>Error!</strong>
                   <slot></slot>
               </div>
           `
       });
       var app = new Vue({
           el: "#app",
           data: {}
       });
   </script>
</body>
</html>效果如下图:

