【實習日報】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,即在自定義全局快捷鍵的時候,只輸入一個鍵值會出錯,報錯提示如下,顯然是主進程那邊出了問題,筆者一開始覺得會不會是因爲是全局熱鍵所以在設置鍵值時不能你那麼少鍵位(很容易衝突或者不小心按出),但是在試了幾個其他的軟件的快捷鍵之後發現一個鍵值也是可以作爲全局熱鍵而存在的,這就使這個問題變得複雜了起來,所以這裏筆者還需要深入研究一下原因

明天的規劃:發佈野牛期貨新版本

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章