VUE第四天-组件以及插槽

目录

今日任务:

掌握组件的创建方式

掌握插槽的使用方法

一、知识点

vue组件

什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可。

组件化和模块化的不同:

模块化:是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一

组件化:是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用

1.1 全局组件定义的四种方式

1.使用 Vue.extend 配合 Vue.component 方法:

2.直接使用 Vue.component 方法:

 3.将模板字符串,定义到script标签中:

4.将模板字符串,定义到template标签中: 

1.2 组件中展示数据和响应事件例如:

1.3使用components属性定义局部子组件

1.4 使用:is属性来切换不同的子组件,并添加切换动画

2.slot插槽

 2.1组件化的使用

 2.2组件化的使用2

2.3回顾学习内容

注意:

1.  父级的填充内容如果指定到子组件的没有对应名字插槽,那么该内容不会被填充到默认插槽中。

2.  如果子组件没有默认插槽,而父级的填充内容指定到默认插槽中,那么该内容就“不会”填充到子组件的任何一个插槽中。

3.  如果子组件有多个默认插槽,而父组件所有指定到默认插槽的填充内容,将“会” “全都”填充到子组件的每个默认插槽中。

案例-动画构子函数


今日任务:

掌握组件的创建方式

掌握插槽的使用方法

一、知识点

vue组件

什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可。

组件化和模块化的不同:

  • 模块化:是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一

  • 组件化:是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用

1.1 全局组件定义的四种方式

1.使用 Vue.extend 配合 Vue.component 方法:

var login = Vue.extend({

    template: '<h1>登录</h1>'
  });
  Vue.component('login', login); 

2.直接使用 Vue.component 方法:

Vue.component('register', {

    template: '<h1>注册</h1>'
  });

 3.将模板字符串,定义到script标签中:

<script id="tmpl" type="x-template">

    <div><a href="#">登录</a> | <a href="#">注册</a></div>
  </script>

同时,需要使用 Vue.component 来定义组件: 

Vue.component('account', {

    template: '#tmpl'
  });

4.将模板字符串,定义到template标签中: 

< template id="tmpl">

    <div><a href="#">登录</a> | <a href="#">注册</a></div>
  </ template >

同时,需要使用 Vue.component 来定义组件: 

 Vue.component('account', {

    template: '#tmpl'
  });

注意:组件中的DOM结构,有且只能有唯一的根元素(Root Element)来进行包裹!

1.2 组件中展示数据和响应事件
例如:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
    <script src="./vue-2.4.0.js"></script>
</head>

<body>
    <div id='app'>
        <!-- 组件的使用  当作标签使用 -->

        <son4></son4>
        <son4></son4>
        <son4></son4>

        <son5></son5>
        <son6></son6>

        {
  {msg2}}

    </div>
<!-- 
    <div id='app2'>
        

        <son4></son4>
        <son4></son4>
        <son4></son4>




    </div> -->



    <!-- 4 -->
    <template id="son4">
        <div>
            son4{
  {msg}}

            <input type="text" v-model="msg" name="" id="">
            <button @click="addList">点我数据添加</button>
            <div v-for="(item,index) in list" :key="index">{
  {item}}</div>

        </div>

    </template>

    <template id="son5">
        <div>
            son5{
  {msg2}}
        </div>
    </template>


    <template id="son6">
        <div>
            son6{
  {msg2}}
        </div>
    </template>

    <script>
        // let obj = {age:10}
        // let obj2 = {age:10}
        // console.log(obj == obj2);

        // 4
        Vue.component("son4", {
            template: "#son4",

            // 目的:数据隔离,互不影响
            data() {
                return {
                    msg: 'hello',
                    list: [4, 5, 6, 7, 8]
                }
            },
            methods: {
                addList() {
                    this.list.push(9)
                }
            }
        })

        let son5 = {
            template: "#son5",
            data(){
                return {
                    msg2:"hello2"
                }
            }
        }
        let son6 = {
            template: "#son6",
            data(){
                return {
                    msg2:"hello2"
                }
            }
        }


        const vm = new Vue({
            el: '#app',
            data: {
                msg2:"这是app里面的"
            },
            methods: {

            },
            components: {
                // 'son5': {
                //     template: "#son5"
                // }
                son5,son6
            }
        })

        // const vm2 = new Vue({
        //     el: '#app2',
        //     data: {},
        //     methods: {

        //     },
        // })
    </script>
</body>

</html>

1.3使用components属性定义局部子组件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值