vue组件-基本使用

1、什么是组件化?

组件化是Vue.js中的重要思想

它提供了一种抽象,让我们可以开发出一个个独立可复用的小组件来构造我们的应用

任何应用都会被抽象成一棵组件树

clipboard

组件化思想的应用:

有了组件化的思想,我们需要在之后的开发中,充分的利用它尽可能将页面拆分成一个个小的,可复用的组件,这样让我们的代码更加方便组织和管理,并且扩展性也更强

2、注册组件的基本步骤

1)创建组件构造器

2)注册组件

3)使用组件

<div id="app">
//3、使用组件
  <my-cpn></my-cpn>
  <my-cpn></my-cpn>
  <my-cpn></my-cpn>
</div>

<script src="../js/vue.js"></script>
<script>
  //1、创建组件构造器对象
  const cpnC = Vue.extend({
    template: `
      <div>
        <h2>我是标题</h2>
        <p>我是内容,哈哈哈哈</p>
        <p>我是标题,呵呵呵额</p>
      </div>`
  })

  //2、注册组件
  // param1: 组件的标签名  param2: 组件
  Vue.component('my-cpn',cpnC);

  const app = new Vue({
    el: "#app", //用于挂载要管理的元素
    data: {   //定义数据
      message: 'hello',
    }
  })
</script>

【注意】

clipboard

3、全局组件和局部组件

1) 全局组件:

//1、创建组件构造器
const cpnC = Vue.extend({
  template: `
    <div>
      <h2>我是标题</h2>
      <p>我是内容,哈哈哈哈</p>
      <p>我是标题,呵呵呵额</p>
    </div>`
})
//2、注册组件(全局组件)
/*Vue.component('my-cpn',cpnC);*/

2)局部组件

疑问? 怎样注册的组价才是局部组件

将组件的注册放在vue实例的内部components属性中

const app1 = new Vue({
  el: "#app1", //用于挂载要管理的元素
  components: {
    // cpn: 使用组件时的标签名  cpnC:组件构造器
    cpn: cpnC
  }
})

4、父组件和子组件

组件与组件之间存在层级关系

而其中非常重要的关系就是父子组件的关系

//1、创建第一个组件(子组件)
const cpnC1 = Vue.extend({
  template: `
    <div>
      <h2>我是标题1</h2>
      <p>我是内容,哈哈哈哈</p>
    </div>`
})

//2、创建第二个组件(父组件)
const cpnC2 = Vue.extend({
  template: `
    <div>
      <h2>我是标题2</h2>
      <p>我是内容,呵呵呵额</p>
      <cpn1></cpn1>
    </div>`,
  components: {
    cpn1: cpnC1
  }
})

5、注册组件的语法糖写法

1、全局组件注册的语法糖

//1、全局组件注册的语法糖
Vue.component('cpn1',
    {
      template: `
    <div>
      <h2>我是标题1</h2>
      <p>我是内容,哈哈哈哈</p>
    </div>`
  })

2、局部组件注册的语法糖写法

const app = new Vue({
  el: "#app", //用于挂载要管理的元素
  data: {   //定义数据
    message: 'hello'
  },
  components: {
    'cpn2': {
      template: `
        <div>
          <h2>我是标题2</h2>
          <p>我是内容,呵呵呵呵</p>
        </div>`
    }
  }
})

6、组件模板抽离的写法

<div id="app">
  {{message}}
  <cpn></cpn>
</div>

<!--1、通过script标签书写模板-->
<!--<script type="text/x-template" id="cpn">
  <div>
    <h2>我是标题1</h2>
    <p>我是内容,哈哈哈哈</p>
  </div>`
</script>-->

<!--2、使用template标签-->
<template id="cpn">
  <div>
    <h2>我是标题1</h2>
    <p>我是内容,哈哈哈哈</p>
  </div>`
</template>


/*注册一个全局组件*/
Vue.component('cpn',{
  template: "#cpn"
})

const app = new Vue({
  el: "#app", //用于挂载要管理的元素
  data: {   //定义数据
    message: 'hello',
  }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值