VUE组件

VUE组件

组件:组件是用来实现局部功能的代码和资源的集合

Vue中使用组件的三个步骤:

  1. 定义组件

    const 组件名 = Vue.extend({
    	template:`
    	<div>
    	组件代码
    	</div>`,
    	data(){
    		return {
    			组件代码赋值
    		}
    	}mounted(){
    		......
    	}
    })
    

    案例:

        const student = Vue.extend({
            template: `
              <div>
              <h2>学生姓名:{{ studentName }}</h2>
              <h2>学生年龄:{{ age }}</h2>
              </div>`,
            data() {
                return {
                    studentName: '张三',
                    age: 20
                }
            },
            mounted() {
                console.log(this)
            },
    
        })
    
  2. 注册组件

    const vm = new Vue({
    	data(){
    		return {}
    	},
    	methods:{},
    	components: {
    		要注册地组件名
    	}
    })

    案例:

        const vm = new Vue({
            data() {
                return {}
            },
            methods: {},
            components: {
                school
            }
        });
    
  3. 使用组件

    <div id="root">
        <school></school>
        <student></student>
    
    </div>
    

组件使用注册的完整案例(包括从组件中注册另一个组件)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="root">
    <school></school>
    <student></student>
</div>
<script src="js/vue2.7.15.js"></script>
<script type="text/javascript">
    const student = Vue.extend({
        template:`
            <div>
                <h2>学生姓名:{{studentName}}</h2>
                <h2>学生年龄:{{age}}</h2>
            </div> `,
        data(){
            return{
                studentName: '张三',
                age: 30
            }
        },
        mounted(){
                console.log(this)
        },
    })
    console.log(student)
    const school = Vue.extend({
        template: `
          <div>
          <h2>学校名称:{{ schoolName }}</h2>
          <h2>学校地址:{{ address }}</h2>
          <hr/>
          <student></student>
          </div>`,
        data() {
            return {
                schoolName: "猿究院",
                address: '太白南路'
            }
        },
        components: {
            student
        }
    });



    const vm = new Vue({
        data(){
            return{
            }
        },
        methods: {},
        components:{
            school
        }
    });
    vm.$mount("#root")
</script>
</body>
</html>

组件的注意事项:

  • 没有el?

    最终所有的组件都要经过vm的管理,由vm中的el来决定在那个容器中展示

  • 组件名

    第一种写法 :首字母小写

    第二种写法 :首字母大写

    多个单词 :kebab-case my-school

    ​ CamelCase MySchool

  • VueComponent:

    组件本质是一个VueComponent 的构造函数,并不是我们创建的 ,是Vue .extend 生成的

  • 组件在使用时Vue解析时会帮我们创建组件的实例对象,new VueComponent({…}),每次调用Vue .extend 都会返回一个全新的 VueComponent

  • VueComponent .prototype . _ proto _ === Vue .prototype

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值