我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue mixins代码复用的项目实践

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue mixins代码复用的项目实践

导语:

两年前来到新公司,开始使用vue开发,代码复用程度比较低。到后期大量的开发经验,以及看了一些设计模式类的书籍。才开始慢慢总结一些代码复用的经验。分享出来,

PS: Vue版本2.6

场景:

1. 代码里有很多当前组件需要的纯函数,methods过多

<!-- 主文件 -->
<template>
    <button @click="clickHandle">button</button>
</template>

<script>
export default {
    name: 'PageDemo',
    methods: {
        func1(){},
        func2(){},
        func3(){},
        clickHandle(){
            this.func1();
            this.func2()
            this.func3()
            console.log('button clicked')
        }
    },
}
</script>

如果当前组件不好拆分,就会出现很多函数,代码会显得不清晰。 我现在的处理方法是通过mixins混入,参照MVC思想,当前文件的的methods只写和模板直接引用的处理方法,其他的函数都通过混入方式引用

// compose-demo.js

export default {
    methods: {
        func1(){},
        func2(){},
        func3(){},
    }
}
<template>
    <button @click="clickHandle">button</button>
</template>

<script>
// 主文件
import ComposeDemo from './compose-demo'
export default {
    name: 'PageDemo',
    mixins: [ComposeDemo],
    methods: {
        clickHandle(){
            this.func1();
            this.func2()
            this.func3()
            console.log('button clicked')
        }
    },
}
</script>

充分利用mixins还有很多优点。

2. 举个例子你有一个组件需要抛出两个数据,直接的v-model不适用。需要采用$emit方法

// 组件
<template>
   <input v-model="a" @change="inputChangeHandle"/>
   <input v-model="b" @change="inputChangeHandle" />
</template>

<script>
export default {
    name: 'ComponentChild',
    props: {
        propA: {
            type: String
        },
        propB: {
            type: String
        }
    },
    data(){
        return {
            a: this.propA,
            b: this.propB,
        }
    },
    methods: {
       inputChangeHandle(){
           this.$emit('update-data', {a:this.a, b:this.b})
       } 
    }
}
</script>


// 调用方
<template>
    <component-child :propA="query.a" :propB="query.b" @update-data="getData"/>
</template>

<script>
import ComponentChild from './component-child.vue'
export default {
    name: 'Page1',
    components: {ComponentChild},
    data(){
        return {
            query: {
                a: '默认数据a',
                b: '默认数据b'
            }
        }
    },
    methods: {
        getData(payload) {
            const {a,b}=payload;
            this.query.a = a;
            this.query.b = b;
        }
    }
}
</script>

如果你有多处地方需要用到ComponentChild组件,那每个调用地方都需要写一个方法来监听@update-data事件。

此时,可以这样改一下

// 纯函数,引入ComponentChild,并且声明getData方法
// compose-component-child.js

<script>
import ComponentChild from './component-child.vue'
</script>
export default {
    components: {ComponentChild},
    
    methods: {
        // 通常情况,复用的业务组件都会有同样的数据结构,都带有query.a和query.b。如果不一致,那直接在父组件重写该方法
        getData(payload) {
            const {a,b}=payload;
            this.query.a = a;
            this.query.b = b;
        }
    }
}



// 调用方
<template>
    <component-child :propA="query.a" :propB="query.b" @update-data="getData"/>
</template>

<script>
import ComposeComponentChild from './compose-component-child.js'
export default {
    name: 'Page1',
    mixins: [ComposeComponentChild]
    data(){
        return {
            query: {
                a: '默认数据a',
                b: '默认数据b'
            }
        }
    },
    methods: { }
}
</script>

借鉴了Angular的依赖注入,Page不直接声明、引用Component,而是通过混入Compose直接使用。

Component组件,Compose引入Component并且注册Component(声明额外的方法),Page调用组件混入Compose,就可以可以直接使用Component组件

3. 同理,可以通过这个方式复用很多data数据,避免模板化的声明

比如常用的表格需要一下数据

<script>
    import {defaultPageSize}from '@/setting'
    export default {
        data(){
            return {
                tableList: [],
                pageSize: defaultPageSize,
                pageNo: 1,
                totalRecords: 0,
            }
        }
    }
</script>

以上数据都可以组装为一个compose-table.js文件混入到你要使用的地方,当然也可以通过在compose-table引用注册表格组件。

总结:

  • 优点:提高代码复用性,同一个组件也可以进行更细致的功能划分
  • 缺点:mixins无法自动利用通过编辑器自动导航到实现的文件,需要全项目搜索,对于熟悉的人来说,使用很方便。对于新人来讲,阅读代码会有些困难。

到此这篇关于vue mixins代码复用的项目实践的文章就介绍到这了,更多相关vue mixins代码复用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue mixins代码复用的项目实践

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue mixins代码如何复用

本篇内容主要讲解“vue mixins代码如何复用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue mixins代码如何复用”吧!场景:1. 代码里有很多当前组件需要的纯函数,methods
2023-06-30

VUE Mixins 实践之道:组件复用与代码简洁的实战攻略

Vue Mixins 作为 Vue.js 提供的组件复用机制,使代码更简洁且易维护。本文将通过多个实用示例,深入剖析 Vue Mixins 的应用之道,助力开发者提升代码的可读性和可维护性。
VUE Mixins 实践之道:组件复用与代码简洁的实战攻略
2024-02-13

VUE Mixins 实用指南:让组件复用与代码简洁成为你的代码利器

VUE Mixins 作为一种强大的工具,使得组件复用和代码简洁变得更加容易。本文将展示 VUE Mixins 的基本语法、使用场景以及一些高级技巧,帮助开发者充分利用 Mixins 来编写更高效、更易维护的代码。
VUE Mixins 实用指南:让组件复用与代码简洁成为你的代码利器
2024-02-13

Vue中mixins的使用方法及实际项目应用是什么

这篇文章主要介绍了Vue中mixins的使用方法及实际项目应用是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中mixins的使用方法及实际项目应用是什么文章都会有所收获,下面我们一起来看看吧。(1)
2023-07-05

轻松掌控 VUE Mixins 精髓:掌握组件复用与代码简洁的艺术

Vue Mixins 作为一种强大的 Vue 特性,可以帮助开发者轻松实现组件复用和代码简洁。通过在组件中使用 Mixins,可以将一些通用的逻辑和数据抽离出来,减少重复编码,提高代码可维护性和可重用性。
轻松掌控 VUE Mixins 精髓:掌握组件复用与代码简洁的艺术
2024-02-13

Springboot+redis+Vue实现秒杀的项目实践

本文主要介绍了Springboot+redis+Vue实现秒杀的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

VUE Mixins 的力量:助力代码重用与组件共享的实用指南

VUE Mixins 是一种强大的工具,它允许你在 Vue 组件中重用代码和共享组件。通过使用 Mixins,你可以保持代码的简洁性和可维护性,同时提高开发效率。
VUE Mixins 的力量:助力代码重用与组件共享的实用指南
2024-02-13

揭秘 VUE Mixins 的精妙之处:组件复用与代码简洁的完美结合

VUE Mixins 是一个强大的工具,它允许你将组件的共用逻辑提取出来,并以可复用的方式在多个组件中使用。这可以大大减少代码的重复,并使你的代码更易于维护。
揭秘 VUE Mixins 的精妙之处:组件复用与代码简洁的完美结合
2024-02-13

VUE Mixins 技巧大揭秘:让组件复用与代码简洁触手可及

Vue Mixins 是一个强大的工具,可以帮助您在 Vue.js 组件之间共享数据、方法和行为。通过使用 Mixins,您可以轻松地创建可重用的组件,从而提高代码的简洁性和可维护性。
VUE Mixins 技巧大揭秘:让组件复用与代码简洁触手可及
2024-02-13

vue-element-admin+flask实现数据查询项目的实例代码

这篇文章主要介绍了vue-element-admin+flask实现数据查询项目,填写数据库连接信息和查询语句,即可展示查询到的数据,需要的朋友可以参考下
2022-11-13

编程热搜

目录