从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. tp5 删除服务器文件

    public function test(){ //ROOT_PATH . 'public' . DS . 'uploads' $filename = ROOT_PATH . 'public' . D ...

  2. os模块(操作系统)

    os.getcwd() #获取当前py工作路径 os.chdir("路径") #改变当前路径到指定路径 os.curdir #返回当前工作路径 os.pardir #返回当前路径上 ...

  3. 2018上C语言程序设计(高级)- 第2次作业成绩

    作业地址 评分准则 第一次作业各项成绩包括三项: 完成PTA所有题目:9分 总结和附加题目:15分 博客记录:70分 博客记录包含三次PTA,共8道题,有正确流程图题目12分,没有的8分: 设计思路2 ...

  4. 存在一个足够大的二维数组,每个数组中的值都是整数,使用javascript如何实现按每个数组中的平均值,从大到小排序这个二维数组?

    这是牛客网上的一道题~ 题意:对数组排序,顺序是按照数组的平均值,即按照一个元素和平均值相减的绝对值的大小来排序...本例按这个绝对值递增排序 解题思想:先求出这个数组的平均值,如果 a<b,那 ...

  5. 安利一个十分实用的IDEA插件--RestfulToolkit

    官网链接:http://plugins.jetbrains.com/plugin/10292-restfultoolkit,英汉双语的帮助文档. 一套 RESTful 服务开发辅助工具集. 1.根据 ...

  6. Python之简单验证码实现

    def v_code(): ret = '' for i in range(5): num = random.randint(0,9) alf = chr(random.randint(65,122) ...

  7. python爬虫之常见的加密方式

    前言 数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发送到对应的人手上. 现代 ,在网络 ...

  8. hello1实例的分析

    JSF简介一. 什么是 JSF:JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架.它提供了一种以组件为中心来开发 Java Web 用户界面的方法 ...

  9. Java第五周总结

    Java抽象类与接口的区别 很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看 ...

  10. .NET中的StringBuilder

    为什么要使用StringBuilder 为什么使用StringBuilder要从string对象的特性说起. string对象在进行字符串拼接时,因为字符串的不可变性,string对象会每次拼接,都会 ...