Vue学习计划-Vue2--Vue组件(二)多文件组件

1 多文件组件:一个文件中包含多个组件

  1. 组件步骤
    1. 第一步:定义
     const school = Vue.extend({
      template:`<div>{{schoolName}}</div>`,
      data(){
        return {
          schoolName: '美丽的学校'
        }
      }
    })
    // extend可以省略
    const student = {
      template: `<h2>{{ studentName }}</h2>`,
       data(){
         return {
           studentName: '小斯白'
         }
       }
     }
    
    1. 第二步:注入
     components:{
        school: school,
        student
      },
    
    1. 第三步:引用
  2. 注意
    1. html文件中 自闭和组件 <ss /> 形式,否则不往下执行, 要写全<ss></ss>
    2. 多个单词的组件名称,组件注入时 不可以使用小驼峰,最好使用kebab-case命名
    new Vue({
        el: "#app",
        data:{
        },
        components:{
            'big-school': school,
            student
        },
    })
    
  3. 全局注册:
Vue.component('student', {
    template: `<h2>{{ studentName }}</h2>`,
    data(){
    return {
        studentName: 'sss'
    }
    }
})

示例:

	<!DOCTYPE html>
	<html lang="en">
	<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>Document</title>
	    <script src="vue.js"></script>
	</head>
	<body>
	    <div id="app">
	        <!-- html文件中不要自闭和组件 <组件 /> 形式,否则不往下执行-->
	        <!-- <big-school/> -->
	        <!-- <bigSchool></bigSchool> -->
	        <big-school></big-school>
	        <hr>
	        <student></student>
	        <student></student>
	        <student></student>
	        <my-class></my-class>
	    </div>
	    <hr>
	    <!-- 另一个容器,用来测试全局组件 -->
	    <div id="root">
	        <my-class></my-class>
	    </div>
	    <script>
	        // 1. 定义组件
	        const school = Vue.extend({
	            // name可以控制vue开发工具中显示的组件名
	            // name: 'xuexiao',
	            template:`
	            <div>
	                <p> 学校的名称: {{ schoolName }}</p>
	                <p> 学校的名称: {{ schoolAdress }}</p>
	            </div>
	            `,
	            data(){
	                return {
	                    schoolName: '美丽的学校',
	                    schoolAdress: '祖国',
	                }
	            }
	        })
	        // 定义组件: 简写
	        const student = {
	            name: 'xuesheng',
	            template:`
	            <div>
	                <p> 学生的名称: {{ studentName }}</p>
	                <p> 学生的年龄: {{ studentAge }}</p>
	            </div>
	            `,
	            data(){
	                return {
	                    studentName: '张三',
	                    studentAge: 22
	                }
	            }
	        }
	        // 全局组件定义
	        Vue.component('my-class', {
	            template:`
	            <div>
	                <p> 我的名称: {{ myName }}</p>
	                <button @click="clickEvent">点击操作</button>
	            </div>
	            `,
	            data(){
	                return {
	                    myName: '我的名字',
	                }
	            },
	            methods: {
	                clickEvent(){
	                    console.log(1111)
	                }
	            },
	
	        })
	        const vm = new Vue({
	            el: "#app",
	            data:{
	            },
	            // 2. 注册组件
	            components:{
	                // 推荐使用kebab-case命名
	                // bigschool: school,
	                'big-school': school,
	                student
	            },
	        })
	        new Vue({
	            el: "#root"
	        })
	    </script>
	</body>
	</html>
  1. 补充一点关于组件的案例,template模板使用组件,案例如下:
	<!DOCTYPE html>
	<html lang="en">
	<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>Document</title>
	  <script src="./vue.js"></script>
	</head>
	<body>
	  <div id="app">
	      <!-- 里面可以什么都不写,只做一个模板容器 -->
	      <!-- <school></school> -->
	      <!-- <student></student> -->
	  </div>
	  <script>
	    const school = {
	      template:`<div>学校名称:{{ schoolName }}</div>`,
	      data(){
	        return {
	          schoolName: '美丽的学校'
	        }
	      }
	    }
	    const student = {
	      template:`<div>学校名称:{{ studentName }}</div>`,
	      data(){
	        return {
	          studentName: '江小白'
	        }
	      }
	    }
	    new Vue({
	      el: "#app",
	      template: `
	      <div>
	        <school/>
	        <student></student>  
	      </div>
	      `,
	      data:{
	        name: '小白' 
	      },
	      components:{
	        school,
	        student
	      }
	    })
	  </script>
	</body>
	</html>

2. 单文件组件

单文件组件结合vue-cli创建的项目来说,创建的项目内部每一个.vue文件就是一个单文件组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值