switch case判断字符串【实习⽇报】2019年5⽉前端开发实习⼯作⽇报汇总
以下记录的是今年5⽉1⽇-5⽉31⽇笔者在公司进⾏web前端⼯作的每⽇⼯作内容,其中隐去了项⽬的具体名称、⼈名、公司名等。
2019.5.1·
今天完成的任务:基本实现了快捷键设置的处理及其持久化
遇到的问题:还是引⽤传递和值传递的区别的问题 如下图,系统报了⼀个这样的错误是说:vue.esm.js?efeb:591 [Vue warn]: Error in callback for watcher "function () { return this._data.$$state }": "Error: [vuex] Do not mutate vuex store state outside mutation handlers." ,具体代码在这⾥,如图:笔者这⾥的思路是深监听shortcuts这个对象,当其值发⽣变化时将更新后的结果传⼊vuex中但是却报了在vuex的mutation函数之外修改vuex的state中的数据的错误,但是这⾥并没有改变state中的shortcuts对象,仔细看才发现是由组件中的this.shortcuts的引⽤传给了vuex中的shortcuts对象,因此当改变组件中的this.shortcuts也会改变vuex中的因此保错。
解决的措施:利⽤深拷贝将shortcuts进⾏深拷贝,如下图
疑问:为什么同样在其他的组件中出现了引⽤传值给vuex中的state中的数据,其在组件中利⽤v-model
改变这个引⽤数据不会报类似的错误?
明天的规划:开始进⾏键值与实际快捷操作效果的对接
2019.5.22
今天完成的任务:将快捷键分成了全局热键和本地快捷键,如图,开始进⾏快捷键的具体操作实现
另⼀个问题是对野⽜期货这个项⽬的总体结构认识不⾜导致的,也就是不清楚其main.js的主进程是在哪⾥,也是通过成哥的解答让我进⼀步了解了野⽜期货的项⽬结构,实际上vue框架的运⽤仅限于renderer⽂件夹中,⽽main⽂件夹这是作为主进程⽽存在的,如果要修改electron的相关参数,⽐如全局热键应该从main⽂件夹的index.js⽂件⼊⼿,其控制台在命令⾏上。
明天的规划:继续野⽜期货客户端的快捷键开发⼯作
2019.5.23
今天完成的任务:初步完成了⼀些快捷效果的对接⼯作,完成了快捷键的启动与否设置,修复了在设置页⾯当⽤户改变了设置却没有点击保存之后再次打开设置页⾯设置项没有还原的bug
遇到的问题:今天主要遇到的问题是来⾃于具体的对接快捷键的实现效果上的,⽬前正在对接本地快捷键,有⼏个效果较难实现,需要摸索:⾏情快捷键中的放⼤缩⼩K线图、快速左右移动这些,另外是交易快捷键中的买⼊卖出这些效果现在不知为何⽆法下单,具体实现有些⿇烦
明天的规划:继续快捷键的对接⼯作
2019.5.24
今天完成的任务:完成了部分本地快捷键的对接,修改了⼀些下拉弹框的样式使得其更加符合整体的主题风格
遇到的问题:今天遇到了⼀个问题是关于是否要使⽤switch case还是使⽤if else的。在某些情况下,⽐如需要处理的条件特别多的时候,⽽这些条件的验证是number或者字符串类型的时候,是可以考虑使⽤switch case来代替if else进⾏条件判断的写法的,使⽤switch case 有很多好处,其中最重要的好处在于其相⽐if else来说执⾏效率更⾼,但是需要占⽤更多的内存空间。 笔者在最近绑定快捷键设置时因为其中涉及到了⼤量的快捷键绑定,不同的快捷键会触发不同的绑定事件,因⽽遇到了⼤量的条件判断语句,在⼀开始笔者是⽤if else来描述这些语句的,但是随即觉得使⽤switch case似乎看起来更加清晰简洁。但是之后笔者⼜打消了这个念头,虽然switch case语句可以提⾼运⾏效率,但是对于只有⼏⼗个判断条件的程序来说,在当前的CPu性能⽀持下笔者认为这种效率的提⾼是可以忽略的。另外更加重要的原因是写switch语句就必须要⼤量使⽤break语句来结束判断之后的处理,这样⼀定程度上也造成了代码的冗余,本质上也没有解决由if else带来的语句判断冗余问题。因此使⽤漫长的if else判断其实也未尝不可。
明天的规划:继续快捷键的对接⼯作
2019.5.27
今天完成的任务:完成了快捷买⼊卖出的快捷操作
遇到的问题:今天遇到了⼀个死循环的问题,即在watch监听当中同时监听vuex中的数据和组件实例
上的数据,笔者之所以这么做的初衷是为了实现vuex上的数据和组件data中的数据的⼀个双向绑定效果,但是如果⽤watch同时监听其⼆者的话,对于引⽤类型的数据来说就可能会造成死循环的问题——当⼀个数据改变,触发相应的数据改变,接着就会触发这个数据的watch监听⼜改变了之前的这个数据…… 这可能会造成电脑的卡死甚⾄死机……
解决的措施:尚在考虑中
明天的规划:继续快捷键的对接⼯作
2019.5.28
今天完成的任务:完成了快捷设置常⽤数量和⼿数、价格的加⼀减⼀的快捷操作
遇到的问题:今天遇到的问题是关于数组对象传⼊vuex中的,⼀直以来笔者做的⽐较多的⼯作都是讲对象类型的数据传⼊vuex中,同时在设置页⾯还需要考虑持久化⽤户设置的过程,作为数组对象来说也是引⽤类型所以如果是⽤直接赋值的写法的话那么仍然会产⽣浅拷贝的损害vuex中数据更新规范的问题,所以在实际的传值中需要避免这种浅拷贝的写法。
明天的规划:继续快捷键的对接⼯作
2019.5.29
今天完成的任务:完成了快捷设置中的撤单操作,正在进⾏全局热键的快捷实现
遇到的问题:今天遇到的问题是有两个:第⼀个是开发本地快捷键的实现思路⽅⾯的,之前笔者的思路有些不好的地⽅:主要体现在在实现快捷键操作需要改变部分组件中data函数中的数据,笔者之前的实现⽅法是将需要更新的数据传⼊vuex中进⾏更新之后再同步到相应的组件实例数据中去,这样做有很多不好的地⽅,⽐如造成了部分代码的杂糅和冗余,将问题复杂化————将引⽤类型的数据传⼊vuex中去还需要考虑深浅拷贝的问题; 另外⼀个问题是在开发全局热键的时候,其实现应该是基于electron中的ipcMain属性的,另外再基于electron中提供的全局快捷键的API来实现。
解决的措施:第⼀个问题的解决办法是依照成哥的意见将快捷操作的实现以发布-订阅者的⽅式来实现,当⽤户按下了快捷键之后应该将发布的事件发送到vuex中去 ,在相关的组件中监听这个vuex事件,当获取到了对应的事件类型时在组件内执⾏相关数据的更新变化,这样也就免去了数据需要传⼊vuex中的⿇烦,同时也使得代码更加简洁易懂; 第⼆个问题的解决主要是通过查询electron的官⽅⽂档,学习相关例⼦来解决,另外也参考了⼀些博客⽂章的例⼦。
明天的规划:继续快捷键的对接⼯作
2019.5.30
今天完成的任务:基本完成了野⽜期货客户端的快捷键设置模块,⽬前还剩下“填⼊买⼀价格并将焦点设置到卖出”等过程还未绑定具体效果,主要是因为⽬前还不知道其具体意思
遇到的问题:今天遇到的主要的问题是关于全局热键的设置和冲突检测⽅⾯。⾸先是冲突检测提醒的时机。参考富途⽜⽜的冲突检测时机可以发现其是在快捷键列表发⽣变化时进⾏检测提醒的。⽽具体是否产⽣了快捷键冲突可以通过electron全局快捷键的API来判断。另外⼀个就是具体的快捷⽅式的实现了,其中截图、显⽰/隐藏窗⼝都可以通过electron中的相关API来实现,但是实现⽼板键的效果就⽐较难了,主要还是这⽅⾯的资料⽐较少,尤其是通过electron型的应⽤实现的资料在⽹上⼏乎不到,⽽参考富途⽜⽜的⽼板键的实现会发现其实现的相当精巧,再点击了⽼板键之后不仅任务栏、⼩图标中的相关显⽰全部消失,甚⾄连任务管理器中的应⽤程序页⾯都已看不到相关进程了!⽽再次点击⽼板键其⼜会出现…… 基于此笔者使⽤electron⽂档中提供的win.hide()⽅法来代替实现任务栏窗⼝隐藏的效果,通过show⽅法也可再次切换回来,这样在⼀般情况下也实现了⽼板键的效果了;但是若要实现其进程在任务管理器中隐藏则需要进⼀步研究。
明天的规划:产出快捷键设置的基本版本
2019.5.31
今天完成的任务:基本完成了快捷键的设置,⽬前还剩下3个未确定效果的按键,另外在检测冲突之后,
在关闭掉冲突的弹窗提醒选项之后还有bug
遇到的问题:今天遇到了⼀个奇怪的问题,同时也算是新发现的⼀个bug,即在⾃定义全局快捷键的时候,只输⼊⼀个键值会出错,报错提⽰如下,显然是主进程那边出了问题,笔者⼀开始觉得会不会是因为是全局热键所以在设置键值时不能你那么少键位(很容易冲突或者不⼩⼼按出),但是在试了⼏个其他的软件的快捷键之后发现⼀个键值也是可以作为全局热键⽽存在的,这就使这个问题变得复杂了起来,所以这⾥笔者还需要深⼊研究⼀下原因
明天的规划:发布野⽜期货新版本

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。