百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

利用vue.js进行组件化开发,一学就会(一)

ztj100 2025-06-24 18:19 3 浏览 0 评论

组件原理/组成

组件(Component)扩展 HTML 元素,封装可重用的代码,核心目标是为了可重用性高,减少重复性的开发。

组件预先定义好行为的ViewModel类。代码按照template\style\script的拆分方式,放置到对应的.vue文件中。


最核心的选项有:

模板(template)--用表现数据与展现给用户的DOM之间的映射关系。

初始数据(data)--数据初始状态。

接受外部参数(props)--组件之间通过参数来进行数据的传递和共享。

方法(methods)--对数据的改动操作一般都在组件的方法内进行。通过v-on指令将用户输入事件和组件方法进行绑定。

生命周期钩子函数(lifecycle hooks)--created\attached\destroyed

组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:


组件定义与应用

1)模块系统

新建文件(piclist.vue)

<template>
    <div>
        <ul>
            <li v-for="p in pro">
                <img src="@/static/images/{{p.pic1.jpg}}" alt="" style="width:200px;height:200px">
                {{p.proName}}</li>
        </ul>

    </div>
</template>

<script>
    export default {
        name: "picList",
        data(){
            return {
                'pro':[
            {'id':1,'proName':'小白桌','propic':'pic1.jpg','desc':''},
            {'id':2,'proName':'小白桌','propic':'pic2.jpg','desc':''},
            {'id':3,'proName':'小白桌','propic':'pic3.jpg','desc':''},
            {'id':4,'proName':'小白桌','propic':'pic4.jpg','desc':''},
            {'id':5,'proName':'小白桌','propic':'pic5.jpg','desc':''},
            {'id':6,'proName':'小白桌','propic':'pic6.jpg','desc':''},
                ]
            }
        }
    }
</script>

<style scoped>

</style>

应用

 <piclist></piclist>
 <script>
    import piclist from '@/components/picList.vue';
    export default {
        name: "product",
        components:{
            piclist
        }

    }
</script>

2)全局注册

Vue.component('componentName',functionComponent);

1.传入对象

Vue.component('customCom',{template:'<div>A custom component!</div>'})

2.传入function

var Mycom=Vue.extend({ // 选项})

Vue.component('customCom',Mycom)
应用:<customCom></customCom>

3)局部注册

让组件只能用在其他组件内部,用components注册

<div id="app">
    <parent></parent>
</div>
 
<script>
//对象形式传入
var Child = {
  template: '<h1>自定义组件!</h1>',
  replace:true
}
//function传入
var Parent=Vue.extend({
    template:'<child></child>'
    components:{
    	'child':Child
    }
})
 
// 创建根实例
new Vue({
  el: '#app',
  components: {    
    'parent': Parent
  }
})
</script>

数据传递

三种方式:props 组件通信(自定义事件) slot

props

1.props其本使用

<template>
    <div>
        <h2>{{title}}</h2>
        <ul>

            <li v-for="p in pro" :key="p.id">
                <img v-bind:src="'/assets/images/'+p.propic" alt="" style="width:200px;height:200px">
                {{p.proName}}</li>
        </ul>

    </div>
</template>

<script>
    export default {
        name: "picList",
        props:['title'],
        data(){
            return {
                'pro':[
            {'id':1,'proName':'小白桌','propic':'pic1.jpg','desc':''},
            {'id':2,'proName':'小白桌','propic':'pic1.jpg','desc':''},
            {'id':3,'proName':'小白桌','propic':'pic1.jpg','desc':''},
            {'id':4,'proName':'小白桌','propic':'pic1.jpg','desc':''},
            {'id':5,'proName':'小白桌','propic':'pic1.jpg','desc':''},
            {'id':6,'proName':'小白桌','propic':'pic1.jpg','desc':''},
                ]
            }
        }
    }
</script>

<style scoped>

</style>
 <piclist title="产品列表"></piclist>

2.props动态语法

利用v-bind绑定一个表达式。

<piclist :title="title"></piclist>

3.绑定修饰符

.sync 双向绑定 .once 单次绑定

<piclist :title.sync='title'></piclist>//把子组件同步父组件
<piclist :title.once='title'></piclist> //当父组件的属性变化时,将传导给子组件,反过来不会

4.prop验证

组件可以为 props 指定验证要求。为了定制 prop 验证方式,你可以为 props 中的值提供一个带有验证需求的对象,而不是一个字符串数组。例如:

Vue.component('my-com', {
  props: {
    // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
    pA: Number,
    // 多个可能的类型
    pB: [String, Number],
    // 必填的字符串
    pC: {
      type: String,
      required: true
    },
    // 带有默认值的数字
    pD: {
      type: Number,
      default: 100
    },
    // 带有默认值的对象
    pE: {
      type: Object,      // 对象或数组默认值必须从一个工厂函数获取
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定义验证函数
    pF: {
      validator: function (value) {
        // 这个值必须匹配下列字符串中的一个
        return ['success', 'warning', 'danger'].indexOf(value) !== -1
      }
    }
  }
})

type 可以是下面原生构造器:String、Number、Boolean、Array、Object、Date、Function、Symbol type 也可以是一个自定义构造器,使用 instanceof 检测。

当 prop 验证失败的时候,Vue.js 将会产生一个控制台的警告。

5.prop转换函数

pG: {
      coerce: function (value) {        
        return value+''  //将值转换为字符串
      }
    }
    
pH:{
	coerce:function (value){
		return JSON:parse(val)
	}
}    

6.props&propsData &Data

propsData 常用来在组件初始化后覆盖props中的属性。


以上所述是IT禅师之道 给大家介绍的Vue.js中 表单绑定数据,希望对大家有所帮助,如果大家有任何疑问请给我留言, IT禅师之道 及时回复大家的。感谢你关注IT禅师之道。

相关推荐

Vue3非兼容变更——函数式组件(vue 兼容)

在Vue2.X中,函数式组件有两个主要应用场景:作为性能优化,因为它们的初始化速度比有状态组件快得多;返回多个根节点。然而在Vue3.X中,有状态组件的性能已经提高到可以忽略不计的程度。此外,有状态组...

利用vue.js进行组件化开发,一学就会(一)

组件原理/组成组件(Component)扩展HTML元素,封装可重用的代码,核心目标是为了可重用性高,减少重复性的开发。组件预先定义好行为的ViewModel类。代码按照template\styl...

Vue3 新趋势:10 个最强 X 操作!(vue.3)

Vue3为前端开发带来了诸多革新,它不仅提升了性能,还提供了...

总结 Vue3 组件管理 12 种高级写法,灵活使用才能提高效率

SFC单文件组件顾名思义,就是一个.vue文件只写一个组件...

前端流行框架Vue3教程:17. _组件数据传递

_组件数据传递我们之前讲解过了组件之间的数据传递,...

前端流行框架Vue3教程:14. 组件传递Props效验

组件传递Props效验Vue组件可以更细致地声明对传入的props的校验要求...

前端流行框架Vue3教程:25. 组件保持存活

25.组件保持存活当使用...

5 个被低估的 Vue3 实战技巧,让你的项目性能提升 300%?

前端圈最近都在卷性能优化和工程化,你还在用老一套的Vue3开发方法?作为摸爬滚打多年的老前端,今天就把私藏的几个Vue3实战技巧分享出来,帮你在开发效率、代码质量和项目性能上实现弯道超车!一、...

绝望!Vue3 组件频繁崩溃?7 个硬核技巧让性能暴涨 400%!

前端的兄弟姐妹们五一假期快乐,谁还没在Vue3项目上栽过跟头?满心欢喜写好的组件,一到实际场景就频频崩溃,页面加载慢得像蜗牛,操作卡顿到让人想砸电脑。用户疯狂吐槽,领导脸色难看,自己改代码改到怀疑...

前端流行框架Vue3教程:15. 组件事件

组件事件在组件的模板表达式中,可以直接使用...

Vue3,看这篇就够了(vue3 从入门到实战)

一、前言最近很多技术网站,讨论的最多的无非就是Vue3了,大多数都是CompositionAPI和基于Proxy的原理分析。但是今天想着跟大家聊聊,Vue3对于一个低代码平台的前端更深层次意味着什么...

前端流行框架Vue3教程:24.动态组件

24.动态组件有些场景会需要在两个组件间来回切换,比如Tab界面...

前端流行框架Vue3教程:12. 组件的注册方式

组件的注册方式一个Vue组件在使用前需要先被“注册”,这样Vue才能在渲染模板时找到其对应的实现。组件注册有两种方式:全局注册和局部注册...

焦虑!Vue3 组件频繁假死?6 个奇招让页面流畅度狂飙 500%!

前端圈的朋友们,谁还没在Vue3项目上踩过性能的坑?满心期待开发出的组件,一到高并发场景就频繁假死,用户反馈页面点不动,产品经理追着问进度,自己调试到心态炸裂!别以为这是个例,不少人在电商大促、数...

前端流行框架Vue3教程:26. 异步组件

根据上节课的代码,我们在切换到B组件的时候,发现并没有网络请求:异步组件:...

取消回复欢迎 发表评论: