Vue基础组件入门

本文深入讲解Vue.js中的组件概念,包括组件的注册方式、使用方法及注意事项。介绍全局与局部注册的区别,展示如何通过组件实现代码的封装与重用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是组件?

组件 (Component) 是 Vue.js 最强大的功能之一

  • 组件可以扩展 HTML 元素,封装可重用的代码

组件注册

全局注册

  • Vue.component(‘组件名称’, { }) 第1个参数是标签名称,第2个参数是一个选项对象
  • 全局组件注册后,任何vue实例都可以用

组件的基础用法

    <div id="example">
      <!-- 2、 组件使用 组件名称 是以HTML标签的形式使用  -->  
      <my-component></my-component>
    </div>
    <script>
        //   注册组件 
        // 1、 my-component 就是组件中自定义的标签名
    	Vue.component('my-component', {
          template: '<div>A custom component!</div>'
        })
    
        // 创建根实例
        new Vue({
          el: '#example'
        })
    
    </script>

组件注意事项

  • 组件参数的data值必须是函数同时这个函数要求返回一个对象
  • 组件模板必须是单个根元素,单页面组件的template内的标签必须要有一个根节点
  • 全局注册的组件使用时不能使用单标签(不会报错,但是只能使用一次 多次使用只显示第一个)
  • 组件模板的内容可以是模板字符串
    <div id="app">
         <!-- 
    		4、  组件可以重复使用多次 
    	      因为data中返回的是一个对象所以每个组件中的数据是私有的
    		  即每个实例可以维护一份被返回对象的独立的拷贝   
    	--> 
        <button-counter></button-counter>
        <button-counter></button-counter>
        <button-counter></button-counter>
          <!-- 8、必须使用短横线的方式使用组件 -->
         <hello-world></hello-world>
      </div>
    
    <script type="text/javascript">
    	//5  如果使用驼峰式命名组件,那么在使用组件的时候,只能在字符串模板中用驼峰的方式使用组件,
        // 7、但是在普通的标签模板中,必须使用短横线的方式使用组件(驼峰命名法)
         Vue.component('HelloWorld', {
          data: function(){
            return {
              msg: 'HelloWorld'
            }
          },
          template: '<div>{{msg}}</div>'
        });
        
        
        
        Vue.component('button-counter', {
          // 1、组件参数的data值必须是函数 
          // 同时这个函数要求返回一个对象  
          data: function(){
            return {
              count: 0
            }
          },
          //  2、组件模板必须是单个根元素
          //  3、组件模板的内容可以是模板字符串  
          template: `
            <div>
              <button @click="handle">点击了{{count}}</button>
              <button>测试123</button>
    			#  6 在字符串模板中可以使用驼峰的方式使用组件	
    		   <HelloWorld></HelloWorld>
            </div>
          `,
          methods: {
            handle: function(){
              this.count += 2;
            }
          }
        })
        var vm = new Vue({
          el: '#app',
          data: {
            
          }
        });
      </script>

局部注册

  • 只能在当前注册它的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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值