Vue组件

Vue组件

组件作用:   用来减少代码量,在使用Vue开发过程中,可以根据不同业务功能将页面划分多个不同的组件,然后由多个组件去完成整个页面的布局。同时方便功能的复用,若不同页面中存在相同的功能只需要引入该功能组件。

全局组件

全局组件注册给Vue实例,可以在任意Vue实例的范围内使用该组件,即在任何vue页面中都可以引用该组件

<div id="app">
    <!--使用全局组件,标签为组件名-->
    <user-login></user-login>
</div>
<!--引入vue-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    //全局组件注册  参数1:组件名称  参数2:组件配置对象 (template: 用来书写组件的html代码)
    Vue.component('userLogin',{
        template:'<div><h1>用户登录</h1></div>'
    });

    const app = new Vue({
        el: "#app",
        data: {},
        methods: {}
    });
</script>

注意:

  • Vue.component用来开发全局组件参数1: 组件的名称  参数2: 组件配置{ template:}   
     template: ''用来书写组件的html代码, template中必须有且只有一个root 元素
  • 使用时需要在Vue的作用范围内根据组件名使用全局组件
  • 如果在注册组件过程中使用 驼峰命名组件的方式 ,在使用组件时 ,必须将驼峰的所有单词小写并加横线使用

局部组件

在模板内部的JavaScript对象中注册,通过将组件注册给对应Vue实例中一个components属性来完成组件注册,这种方式不会对Vue实例造成无谓的负担


  //1.声明局部组件模板  template 标签 注意:在Vue实例作用范围外声明
    <template id="loginTemplate">
        <h1>用户登录</h1>
    </template>
  
  //2.定义变量用来保存模板配置对象
      let login ={   //具体局部组件名称
          template:'#loginTemplate'  //使用自定义template标签选择器即可
      };
  
  //3.注册组件    
      const app = new Vue({
          el: "#app",
          data: {},
          methods: {},
          components:{  //将组件构造器放在了实例中,称为局部组件
              login:login  //注册局部组件
          }
      });
  
   //4.局部组件使用 在Vue实例范围内
       <login></login>

components属性注册局部组件对象的形式为 key : value

key是自定义标签名,即组件使用时的标签名

value是组件名

模块系统中局部注册

如果你需要在局部注册之前导入每个你想使用的组件,在 ComponentB 的模板中使用 ComponentAComponentC组件

import ComponentA from './ComponentA'
import ComponentC from './ComponentC'

export default {
  components: {
    ComponentA,
    ComponentC
  },
  // ...
}

组件模板抽离的写法

 <div id="app">
    <!--使用组件,书写时改驼峰命名为短横线-->
        <my-cpn></my-cpn>
    </div>
    <!--组件模板抽取-->
    <template id="myCpn">
        <h3>组件模板抽离</h3>
    </template>

<script>

    let app = new Vue({
        el:'#app',
        components:{
            'my-cpn':{    //使用时的标签名
                template:'#myCpn',
                data(){
                  return {}
                  },
                methods:{},
                props:[]
            }
        }
    })
</script>
posted @ 2020-11-05 22:56  至安  阅读(158)  评论(0编辑  收藏  举报