从2017年底开始做公司批改后台系统(服务内部人员对熊猫小课用户的作业进行批改、对批改员工资结算等)到教务系统(服务于内部人员对熊猫小课等移动端产品的内容进行配置等)、ai-boss系统(服务于内部人员更高效的对python系产品的用户进行服务)、最后到现在的契约运营管理系统。

前两个pc端系统,我们完全没有引入vuex,ai-boss里面因为涉及到聊天,聊天左边是用户列表,有群聊和单聊,右边是聊天窗口。组件嵌套已经达到至少3层,父子关系的组件要对同一个变量进行操作,子组件通过props来接受父组件传递的数据,然后子组件对数据进行修改通过emit触发事件将修改的数据传递给父组件,已经使得数据改变很难追踪。我们必须得引入vuex来解决多个组件操作同一个变量,变量数据变化难以追逐变化来源的问题。

现在做的契约运营管理系统这个新项目我一个人从头部布局开始写,页面很简单,开始写之前我还是思考了一下要不要引入vuex。引入vuex需要一些理由:

1、组件嵌套深,嵌套层级在2层及以上,并且最外层到最底层的组件需要对同一个变量进行操作就可以考虑;

2、非父子关系的组件对同一个变量要进行操作,考虑。

契约管理系统的页面涉及到两个页面切换,且这两个页面组件都一样,只是数据不同。页面中上面是选择框,下面是根据选择框的选择请求的数据。这就已经涉及到非父子组件之间需要对同一变量进行操作的问题。首次进入页面选择框还有一个后端返回的默认选项,父子组件也需要对同一个变量进行操作。将所有组件之间要共同操作的变量都用vuex来管理,我们在需要使用vuex管理的变量的页面去引入相关变量,然后就可以直接操作,不用再担心会有因为变量是在组件中的props中定义的,所以组件不能修改变量,只能通过在父组件写事件,子组件通过emit触发事件来将修改的数据传给父组件的情况。

我已经受够了在子组件中用props来定义变量接受父组件的传来的数据,我只希望我封装了很多通用的组件,然后可以像只写了一个页面一样,可以任意修改定义的变量然后渲染。

用vuex管理变量时只能通过提交mutation来改变store中定义的变量的状态,我们需要为每一个在store中定义的变量,在mutation中写一个对应的修改变量的方法。在需要使用的页面中引入变量和修改变量的方法。也就是我们会花上一些时间去写些重复性的用来定义变量和修改变量的方法的代码,这让使用vuex的人感觉也不是太好,但是如果定义好这些共享变量之后,不管组件在哪里,修改这些变量就会容易很多,就像在一个页面书写逻辑一样,什么都不用考虑了,开发者只需要去关注书写逻辑。

使用vuex之后,我也不用像以前那样害怕需求的变更。比如需要给选择器加一个缓存内容选项的功能,两个切换的页面是通过父级页面的route-view来渲染的,那么这个读取缓存的数据的逻辑是写在封装了选择器的组件中的mouted中还是写在包含这个组件的页面中?因为使用vuex管理的变量,变量在哪里都可以轻易读取和修改,所以具备很大灵活性,在哪里都可以去读缓存数据,主要是要满足业务场景。这里当然是写在包含了组件的页面中是最好的,进入页面的时候如果有缓存就不请求获取默认选择器的值的接口,否则才请求。

采用了更好的适合业务场景的技术,让代码更适应不同需求,代码具有了更好的扩展性,出错率也低了很多。

更重要的,需要不断主动去挖掘更好的适合业务场景的技术,不断去优化改进实现的方案,效率才能不断提高。

vuex早就应该在项目中大量使用了,要做专业的程序员不应该对技术怠慢。

和2018年年初做管理系统的不同(vuex)的更多相关文章

  1. 最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代码,做管理系统最佳的选择。

    下载地址:http://download.csdn.net/download/wulang1988/10039402 最新版 INSPINIA IN+ - WebApp Admin Theme v2. ...

  2. Python 能做什么?

    Python 能做什么? Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,我所关注的是网络爬虫方面,2018即将到来,我准备步入python的世界. Hello,wor ...

  3. 超市管理系统—NABCD模型

    1) N (Need 需求) 需求分析: 超市的数据和业务越来越庞大,而计算机就是一种高效的管理系统,这就需要我们把超市的管理与计算机结合起来,从而超市管理系统应运而生.依靠现代化的计算机信息处理技术 ...

  4. 2017总结&2018展望

    2017已逝2018已来,是时候放下包袱来好好回顾下2017做了什么,有什么收获,遗憾之处的原因是什么.2018应该怎么做才能让自己满意,才能少一些遗憾. 2017 工作 工作中所参与的项目是一个直播 ...

  5. Before NOIP 2018

    目录 总结 刷题 2018 - 9 - 24 2018 - 9 - 25 2018 - 9 - 26 2018 - 9 - 27 2018 - 9 - 28 2018 - 9 - 29 2018 - ...

  6. 图解Python可以做些什么

    Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无 ...

  7. win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序

    本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...

  8. ZooKeeper 并不适合做注册中心

    zookeeper 的 CP 模型不适合注册中心 zookeeper 是一个非常优秀的项目,非常成熟,被大量的团队使用,但对于服务发现来讲,zookeeper 真的是一个错误的方案. 在 CAP 模型 ...

  9. 学Python编程能做什么工作?从事什么岗位?——这些问题你知道吗?

    前言 学Python编程能做什么工作?随着人工智能发展,学习python语言的人员有更多的岗位机会,python从事的职业广泛,从游戏到AI人工智能能都可以用Python实现.除了编程,各种岗位的人都 ...

随机推荐

  1. javascript 使用数组+循环+条件实现数字转换为汉字的简单方法。

    这几天,博主碰到了几道关于数字转汉字的javascript算法题,在网上找了很多的答案,发现都有点复杂,于是我决定自己写一篇关于这种算法题的简单解法,以下是博主自己的见解,有不足的地方请多指教. 接下 ...

  2. cobbler批量化安装系统

  3. 输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少

    输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少? 例子:输入数字9,则输出结果位9.因为[0-9]中,只有数字7有连续的三个‘1’出现,别的都没有,所以一共有9个数字 ...

  4. 番外篇1:在Windows环境中安装JDK

    他山之石,可以攻玉!欢迎关注我的微信公众号 本文作为构建第一个Java程序的番外篇一,跟大家探讨下在Windows下怎么安装JDK.由于本人没有Mac,因此如果是Mac的同学,请自行百度哦! 读前预览 ...

  5. uniapp如何将微信小程序API封装为Promise

    var SYNC_API_RE = /requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$/; var CALL ...

  6. Hello2实例的分析

    首先: java EE 上的hello2项目是一个部署在glass fish上的开发源码的java web项目,在终端通过命令行使用maven进行打包成.war文件,最后部署到相关的glass fis ...

  7. ORA-28000: the account is locked解决

    首先使用具有sysdba权限的账户登陆,如sys账户和system账户 新建一个sql窗体,并执行语句解锁被锁定的账户,如我这里sgyw账户: alter user sgyw account unlo ...

  8. docker hub切换国内镜像

    官方docker hub访问非常的慢,安装之后最好先切换国内镜像: 执行: curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh ...

  9. calcOpticalFlowPyrLK

    void calcOpticalFlowPyrLK( InputArray prevImg, InputArray nextImg,                                   ...

  10. 如何清除SQLServer服务器名称、登录名等

    SQLServer 2008 R2清理方法: 找到下面路径:C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100 ...