Vue组件的注册

Vue组件命名

1、短横线分隔( kebab-case)

Vue.component('my-component-name', { /* ... */ })

注意字母全小写

2、帕斯卡命名方式(PascalCase)

Vue.component('MyComponentName', { /* ... */ })

(1)当使用 PascalCase (首字母大写命名) 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。也就是说 <my-component-name><MyComponentName> 都是可接受的。
(2)注意:直接在 DOM (即非字符串的模板) 中使用时只有 kebab-case 是有效的。

Vue组件注册使用

一、全局注册

Vue组件在全局注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中,全局注册组件使用 Vue.component()方法

1、代码内部嵌入

(1)通过Vue.extend()和Vue.component()注册

//创建组件构造器对象
var tmp1 = Vue.extend({
       template: "<p>通过 Vue.extend 创建的 tmp1 组件</p>"
     });
//注册组件
Vue.component("my-tmp1", tmp1);  //第一个参数是自定义名称,第二个参数是组件名称

(2)通过Vue.component()字面量注册

//第一个参数是自定义名称,第二个是组件实例
Vue.component("my-tmp2", Vue.extend({
     template: "<p>通过 Vue.extend 创建的 tmp2 组件</p>"
  }));

(3)通过< template id=“tmp1”> 方式注册

js部分:

Vue.component("my-tmp3", {
    template: "#temp3"
   });

HTML部分:

<template id="temp3">
    <h4>这是通过 app 外部 template 标签自定义的 tmp3 组件</h4>
</template>

2、外部Vue组件注册

(1)先定义一个组件zj.vue

//html模板部分
<template>
    <h1>你好lhj!</h1>
</template>

//js代码部分
<script>
    export default {
        name: "zj"
    }
</script>

//css样式部分
<style scoped>
</style>

(2)在需要的页面内导入组件zj.vue

import zj from "./components/zj"

(3)Vue.component()注册组件

Vue.component("zj",zj)

二、局部注册

全局注册所有的组件意味着即便你已经不再使用一个组件了,它仍然会被包含在你最终的构建结果中这造成了用户下载的 JavaScript 的无谓的增加。

局部组件定义在vue实例内部,该组件只能在vue实例控制范围内才能使用,在其子组件中不可用,局部注册组件为 components 属性,它的属性值是一个对象。

1、代码内部嵌入

export default{
  name: 'App',
    data(){
      return{
          name:"lhj"
      }
    },
    components:{
      "temp5": {
                 template:"<h1>局部组件temp5</h1>"
               },
      "temp6":{
                 template:"<h1>局部组件temp6</h1>"
              }
            }
      })

HTML页面

<div>
    <temp5></temp5>
</div>

2、外部Vue组件注册

(1)在需要的页面内导入已经定义好的组件zj.vue

import zj from "./components/zj"

(2)components 属性局部注册

export default{
  name: 'App',
    data(){
      return{
          name:"lhj"
      }
    },
    components:{
      "temp7": zj       //键值对的键为自定义名字,值为引入的组件名字
            }
      })

HTML页面

<div>
    <temp7></temp7>
</div>

当然,也可以不自定义组件的名字,如下所示:

components:{ zj }       //不自定义组件的名字

HTML页面

<div>
    <zj></zj>
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值