Vue基础day03--组件

组件

  • 组件 (Component) 是 Vue.js 最强大的功能之一
  • 组件可以扩展 HTML 元素,封装可重用的代码

在这里插入图片描述
在这里插入图片描述
组件化思想的应用:

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

组件注册

全局注册

  • Vue.component(‘组件名称’, { }) 第1个参数是标签名称,第2个参数是一个选项对象
  • 全局组件注册后,任何vue实例都可以用
  • 组件注意事项
  • 组件参数的data值必须是函数同时这个函数要求返回一个对象
  • 组件模板必须是单个根元素
  • 组件模板的内容可以是模板字符串
    第一种方式
<body>
  <div id="app">
    <!-- 如果要使用组件,直接,把组件的名称,以 HTML 标签的形式,引入到页面中,即可 -->
    <!-- <my-com1></my-com1> -->
    <mycom1></mycom1>
  </div>

  <script>
    // 1.1 使用 Vue.extend 来创建全局的Vue组件
    // var com1 = Vue.extend({
   
    //   template: '<h3>这是使用 Vue.extend 创建的组件</h3>' // 通过 template 属性,指定了组件要展示的HTML结构
    // })
    // 这个返回一个模板对象
    // 1.2 使用 Vue.component('组件的名称', 创建出来的组件模板对象)
    // Vue.component('myCom1', com1)
    // 如果使用 Vue.component 定义全局组件的时候,组件名称使用了 驼峰命名,则在引用组件的时候,需要把 大写的驼峰改为小写的字母,同时,两个单词之前,使用 - 链接;
    // 如果不使用驼峰,则直接拿名称来使用即可;
    // Vue.component('mycom1', com1) 把模板对象定义为真正的组件

    // Vue.component 第一个参数:组件的名称,将来在引用组件的时候,就是一个 标签形式 来引入 它的
    // 第二个参数: Vue.extend 创建的组件  ,其中 template 就是组件将来要展示的HTML内容
    Vue.component('mycom1', Vue.extend({
   
      template: '<h3>这是使用 Vue.extend 创建的组件</h3>'
    }))


    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
   
      el: '#app',
      data: {
   },
      methods: {
   }
    });
  </script>

第二种方式:

<div id="example">
  <!-- 2、 组件使用 组件名称 是以HTML标签的形式使用  -->  
   <!-- 还是使用 标签形式,引入自己的组件 -->
</div>
<script>
    //   注册组件 
    // 1、 my-component 就是组件中自定义的标签名
     // 注意:不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素
	Vue.component('my-component', {
   
      template: '<div>A custom component!</div>'
    })

    // 创建根实例
    new Vue({
   
      el: '#example'
    })

</script>

第三种方式

<body>
    <div id="app">
        <mycom3></mycom3>
        <!-- <login></login> -->
    </div>
 <!-- 在 被控制的 #app 外面,使用 template 元素,定义组件的HTML模板结构  -->
    <template id="tmpl">
      <div>
        <h1>这是通过 template 元素,在外部定义的组件结构,这个方式,有代码的智能提示和高亮</h1>
        <h4>好用,不错!</h4>
      </div>
    </template>
      <script>
        Vue.component('mycom3', {
   
            template: '#templ'
        })

        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
   
            el: '#app',
            data: {
   },
            methods: {
   }
        });

局部注册
只能在当前注册它的vue实例中使用

  <div id="app">
      <my-component></my-component>
  </div>


<script>
    // 定义组件的模板
    var Child = {
   
      template: '<div>A custom component!</div>'
    }
    new Vue({
   
      //局部注册组件  
      components: {
   
        // <my-component> 将只在父模板可用  一定要在实例上注册了才能在html文件中使用
        'my-component': Child
      }
    })
 </script>

组件中的data

 <div id="app">
        <mycom1></mycom1>
    </div>

    <script>
        // 1. 组件可以有自己的 data 数据
        // 2. 组件的 data 和 实例的 data 有点不一样,实例中的 data 可以为一个对象,但是 组件中的 data 必须是一个方法
        // 3. 组件中的 data 除了必须为一个方法之外,这个方法内部,还必须返回一个对象才行;
        // 4. 组件中 的data 数据,使用方式,和实例中的 data 使用方式完全一样!!!
        Vue.component('mycom1', {
   
            template: '<h1>这是全局组件---{
   {msg}]</h1>',
            data: function() {
   
                return {
   
                    msg: '这是组建中data定义的数据'
                }
            }
        })

        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
   
            el: '#app',
            data: {
   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值