美文网首页
层次化思考:修改多个组件的技术方案的选择

层次化思考:修改多个组件的技术方案的选择

作者: 凌霄光 | 来源:发表于2018-09-28 18:56 被阅读40次

需求描述

应用中很多页面的学生名字不一致,经分析,是因为每个页面调用了不同的接口,各接口返回的学生信息字段、以及页面取得字段不一致,导致了学生姓名显示的不一致。

技术方案

登录以后会进行考勤,把所有学生信息获取到以后存入全局的store,所有的组件从这里取studentInfo就不会有问题。

于是我们就围绕着这个思路来做技术方案的设计,讨论后,有几种方案:

1.vue指令

从store里面取出学生信息,传入id和要取的字段名,然后渲染学生信息到视图,这个过程可以通过指令来做。

在组件里

2. mixin

因为传入id和key,从store中取出对应的数据,这段逻辑是多组件公共的,可以放到mixin里面,每个组件引入


组件里:


3. vuex的getter

从vuex中取数据,并且传入参数做一些处理,最正确的方式是使用vuex提供的getter

4. httpProxy层的适配

出现问题的根源是不同接口返回的学生信息字段不一致,修改所有的组件是一个思路,还一个思路是在数据到达组件之前,通过一层适配,把所有的变化屏蔽掉,对组件来说是透明的。


经过技术评审,最终我们没有用适配器的方案,因为组件和接口以后要经常修改的,如果使用了适配器,一旦组件或者接口有了变动,适配层也得变动。这种经常变动的情况不适合用适配。

最终我们使用 vuex层的getter + 组件层的mixin来做。

代码实现

具体代码如下:
vuex层

const getters = {
  getStudentInfo: function (state) {
    return function(id, key = 'stuName') {
      const student = state.allStudentList && state.allStudentList.filter((student) => student.id === id);
      if (student[0]) {
        return student[0][key];
      }
      return null;
    }
  }
}

mixin

import {mapGetters} from 'vuex';
export default {
    computed: {
       ...mapGetters(['getStudentInfo'])
    }
}

组件里

import studentInfoMixin from '@/core/mixins/studentInfo-mixin'

export default {
  mixins: [studentInfoMixin]
}
  <div>{{getStudentInfo('id')}}</div>

总结

项目的架构是多层次的,我们可以在任何一层做修改,但是并不是每一种都合适和正确,考虑到维护的成本以及每种框架的思路,从中选择最正确的方式,多层处理结合来实现某一个功能才是对的。

相关文章

  • 层次化思考:修改多个组件的技术方案的选择

    需求描述 应用中很多页面的学生名字不一致,经分析,是因为每个页面调用了不同的接口,各接口返回的学生信息字段、以及页...

  • iOS 组件化学习

    蘑菇街的方案: 蘑菇街组件化的技术方案对应的demo 上面的反驳 Casa提出了不同意见,下半部分是下面蘑菇街修改...

  • 组件化方案调研

    组件化方案调研 组件化概念 组件化就是将一个app分成多个Module,如下图,每个Module都是一个组件(也可...

  • iOS 组件化/模块化文章

    1.博客文章总结 iOS组件化思路-大神博客研读和思考iOS组件化实践方案-LDBusMediator炼就组件化架...

  • 轻量组件化方案

    清量组件化方案一代目 参考得到的方案,做了部分修改项目地址 一. 组件化我们要实现什么: 1.各模块可以单独运行 ...

  • iOS组件化方案

    iOS组件化方案 iOS组件化方案

  • iOS 组件化方案探索

    组件化方案相关链接: 一、Limboy的组件化方案: 原文1 原文2二、Casa的组件化方案: 原文

  • 组件化方案

    组件化方案引用 在现有工程中实施基于CTMediator的组件化方案 iOS组件化实践(一):简介 iOS组件化实...

  • iOS组件化文章汇总

    iOS应用架构谈 组件化方案 APP组件化之路 我所理解的组件化之路 iOS 组件化方案探索 围观神仙打架,反革命...

  • iOS:组件化的三种通讯方案

    组件化 本文主要介绍组件化常用三种通讯方式. 常⽤的三种组件化通讯方案 组件化通信方案组件化最重要的是兄弟模块的通...

网友评论

      本文标题:层次化思考:修改多个组件的技术方案的选择

      本文链接:https://www.haomeiwen.com/subject/tlapoftx.html