和2018年年初做管理系统的不同(vuex)
从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)的更多相关文章
- 最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代码,做管理系统最佳的选择。
下载地址:http://download.csdn.net/download/wulang1988/10039402 最新版 INSPINIA IN+ - WebApp Admin Theme v2. ...
- Python 能做什么?
Python 能做什么? Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,我所关注的是网络爬虫方面,2018即将到来,我准备步入python的世界. Hello,wor ...
- 超市管理系统—NABCD模型
1) N (Need 需求) 需求分析: 超市的数据和业务越来越庞大,而计算机就是一种高效的管理系统,这就需要我们把超市的管理与计算机结合起来,从而超市管理系统应运而生.依靠现代化的计算机信息处理技术 ...
- 2017总结&2018展望
2017已逝2018已来,是时候放下包袱来好好回顾下2017做了什么,有什么收获,遗憾之处的原因是什么.2018应该怎么做才能让自己满意,才能少一些遗憾. 2017 工作 工作中所参与的项目是一个直播 ...
- Before NOIP 2018
目录 总结 刷题 2018 - 9 - 24 2018 - 9 - 25 2018 - 9 - 26 2018 - 9 - 27 2018 - 9 - 28 2018 - 9 - 29 2018 - ...
- 图解Python可以做些什么
Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无 ...
- win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...
- ZooKeeper 并不适合做注册中心
zookeeper 的 CP 模型不适合注册中心 zookeeper 是一个非常优秀的项目,非常成熟,被大量的团队使用,但对于服务发现来讲,zookeeper 真的是一个错误的方案. 在 CAP 模型 ...
- 学Python编程能做什么工作?从事什么岗位?——这些问题你知道吗?
前言 学Python编程能做什么工作?随着人工智能发展,学习python语言的人员有更多的岗位机会,python从事的职业广泛,从游戏到AI人工智能能都可以用Python实现.除了编程,各种岗位的人都 ...
随机推荐
- vimrc配置
"=========================================================================" DesCRiption 适合 ...
- 派生 de rive
''' de rive 派生 python2 (经典类|新式类) python3 (新式类) 1. What is derive? 什么是派生? 派生:子类定义自己新的属性,如果与父类同名,以子类自己 ...
- 再见了,我最爱的OI~~~
唔,迟到了三个月的感言呢. 我就这样离开OI了,成为了一个退役的OIer,当年高一的时候还觉得自己有很多时间,没想转眼间自己就退役了.呵呵,来到OI 从没有在这个世界带起一丝风浪,也没有拿到一个满意的 ...
- Java学习笔记(6)
superclass(base class)和subclass 扩展一个类的语法 public class subClassName extends superClassName 子类中通过super ...
- Laravel写讯搜的ini配置文件的一处陷阱
讯搜客户端在连接服务端之前需要读取配置文件里的配置信息. 配置文件里, 我一开始这样写: server.index = 127.0.0.1:8383 ; 表示索引接口 server.search = ...
- Applets的分析
一.有关Java Applet的基础 1.JavaApplet就是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果.包含Applet的网页被称为Java-powered页,可 ...
- MySQL之命令提示符
一.MySQL创建数据表 1.通过 mysql 命令窗口创建MySQL数据库 2.通过 mysql 命令窗口创建MySQL数据表 3.通过 mysql 命令窗口查看创建的数据表的具体信息 二.Mysq ...
- 【消息中间件之RabbitMQ学习】-开篇-001
写在前面的话 项目中因为要用到消息中间件,当初极力推荐RabbitMq.但因为种种原因,最终选型为java+mongodb自实现一套分布式的消.没有用RabbitMq工作过,实属遗憾.因为个人来说实在 ...
- vue打包后接口报错
最近自己和朋友做了一个小的项目,用的是vue3.x版本,本地dev运行的时候接口什么的都是正常的,但是build打包后本地使用anywhere启动一个本地服务的时候发现接口报错405状态,发布到线上接 ...
- 寒假作业 pta编程总结3
实验代码: 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕 ...