【实习日报】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

今天完成的任务:将快捷键分成了全局热键和本地快捷键,如图,开始进行快捷键的具体操作实现

遇到的问题:今天遇到的第一个问题是关于展开运算符“...”的具体使用方面的,一直以来都对这个概念有些模糊,后面也是通过这篇文章有了基本的认识: http://www.cnblogs.com/mingjiezhang/p/5903026.html

另一个问题是对野牛期货这个项目的总体结构认识不足导致的,也就是不清楚其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,即在自定义全局快捷键的时候,只输入一个键值会出错,报错提示如下,显然是主进程那边出了问题,笔者一开始觉得会不会是因为是全局热键所以在设置键值时不能你那么少键位(很容易冲突或者不小心按出),但是在试了几个其他的软件的快捷键之后发现一个键值也是可以作为全局热键而存在的,这就使这个问题变得复杂了起来,所以这里笔者还需要深入研究一下原因

明天的规划:发布野牛期货新版本

发布了24 篇原创文章 · 获赞 20 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/a715167986/article/details/99421463