国瑞个人博客
首页 > Vue > Vue的组件中对于slot的使用

Vue的组件中对于slot的使用

Vue的组件中对于slot的使用

 2017年11月23日 作者: 国瑞个人博客 608次浏览

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

slot使用方法一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
    <div id="app">
<my-slot></my-slot>
    </div>
</body>
</html>
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.min.js"></script>
<script type="text/javascript">
     Vue.component('my-slot',{
        template:
        `
        <div class="main">
            <div class="header">
                <slot>这里是头部</slot>
            </div>
            <div class="content">
                <slot>这里是中间</slot>
            </div>
            <div class="footer">
                <slot>这里是尾部</slot>
            </div>
        </div>
        `,

     })

     new Vue({
        el:"#app",
        data:{

        }
     })
</script>
结果为
1
2
3
这里是头部
这里是中间
这里是尾部
注意:

1、组件使用过程中,组面最外面必须有包裹,否者会只显示第一个区域

2、slot中的数据表示的就是默认值,只有在dom中进行引用,浏览器中显示的才是引用的值

slot使用方法二(比较常用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
    <div id="app">
        <my-slot>
                <template slot="header">这里不是默认的头部</template>
                <template slot="content">这里不是默认的中间</template>
                <template slot="footer">这里不是默认的尾部</template>
        </my-slot>
    </div>
</body>
</html>
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.min.js"></script>
<script type="text/javascript">
     Vue.component('my-slot',{
        template:
        `
        <div class="main">
            <div class="header">
                <slot name="header">这里是头部</slot>
            </div>
            <div class="content">
                <slot name="content">这里是中间</slot>
            </div>
            <div class="footer">
                <slot name="footer">这里是尾部</slot>
            </div>
        </div>
        `,

     })

     new Vue({
        el:"#app",
        data:{

        }
     })
</script>
结果为:
1
2
3
这里不是默认的头部
这里不是默认的中间
这里不是默认的尾部
注意:

1、

是一一对应的关系 div负责的是dom中,slot负责的则是组件中

1
<div slot="one"></div>  <slot name="one"></slot>

2、通常情况下,使用template对数据进行包裹

1
2
3
4
5
    <template slot="one">
        <div>
            内容
        </div>
    </template>

使用slot分发内容

使用一种方式混合父组件的内容与子组件自己的模板,这个过程称之为“内容分发”。在子组件中使用特殊元素作为内容的插槽,这样会使组件的可拓展性更强。

单个slot

在子组件模板中有slot标签,被视为备用内容,在父组件不提供内容的情况下使用,如果父组件提供内容,则把整个内容片断插入到slot所在的DOM位置,并替换掉slot镖标签本身。

子组件模板中没有slot标签,父组件提供的内容会被抛弃。

具名slot

元素可以用一个特殊的属性name来配置如何分发内容,可以使用匿名的slot.处理name没有对应slot的内容

编译的作用域

父组件模板的内容在父组件作用域内编译。

子组件模板的内容在子组件作用域内编译。

百度已收录

点击快速分享:

以上就是国瑞前端个人博客带来的是《Vue的组件中对于slot的使用》,感谢您的观看!

如果没有特殊的说明,本文即为国瑞前端博客原创(www.huanggr.cn),欢迎读者转载并保留本站版权!https://www.huanggr.cn/231.html

「专业前端博客,如果觉得我的文章对您有用,请帮助本站成长」

赞( 39 ) 打赏

谢谢你请我吃鸡腿*^_^*

支付宝
微信
39

谢谢你请我吃鸡腿*^_^*

支付宝
微信
标签:

上一篇:

下一篇:

相关文章:

共有 0 条评论

博客简介

国瑞个人博客: https://www.huanggr.cn/,我们关注Web前端开发技术,web前端开发,移动前端开发,前端资讯,同时分享前端资源和工具等,期待你的参与,了解更多..

博主独立研发主题:

本站唯一QQ群

加入国瑞个人博客QQ群

本群为学习探讨群,主要和前端相关,欢迎广大前端(抱有学习目的均可)爱好者加入!广告请勿添加!

升级版本

web前端开发博客,基于vue脚手架制作的前端博客正在制作中,尽情期待,目前示例的代码位于此处

最新版本(尽请期待)-web前端开发博客

精彩评论

本站主要提供服务

二年web前端开发博客,本站专注提供web资源下载,技术问题解答,经验分享,也提供新手的web技术指导,二年前端个人博客,期待你的加入!

站点统计

  • 文章总数: 276 篇
  • 草稿数目: 54 篇
  • 分类数目: 26 个
  • 页面总数: 16 个
  • 评论总数: 243 条
  • 链接总数: 10 个
  • 标签总数: 107 个
  • 建站时间: 839 天
  • 注册用户: 668 人
  • 访问总量: 8824314 次
  • 最近更新: 2019年8月9日
-->