學習平台專案總結

2022-03-10 08:52:56 字數 2819 閱讀 7077

為了以後的面試不至於忘記,覺得有必要做下總結,不然以後忘了很多專案的細節。

說下前端部分,我們沒有使用vux來做狀態管理,而是基於flux架構思想實現了自己的狀態管理。總的來說就是:

把狀態放到data.js的store裡,把更新狀態的方法也放到data.js裡,再把data.js的store賦值給vue根例項的data,然後再通過props將根例項的data分發給不同的子元件。

要觸發狀態更新的話,就在子元件中引入store的data.js檔案,再呼叫獲取後台資料更新狀態的方法。

和vue官網中的簡單的狀態管理有點類似:

示例模板如下:

index.js

newvue()

data.js

export default

,

//更新狀態的方法

a(){},

b(){},

...}

觸發狀態更新就是import data.js後再去呼叫其中的方法,略。

webpack、babel等相關知識

git相關命令知識

express框架的理解與使用

vue框架的理解與使用

echarts、iview等元件庫的使用

moment.js、mysql.js、axios.js等函式庫的使用

sql命令的複習與使用。

js設計模式的運用

設計、除錯、分析、檢索資訊能力的增長

1.如何統計pv、uv、平均停留時長

停留時長計算規則:

每次進入頁面的時候記錄下訪問時間starttime以及referer url,然後從localstorage中拿出上個頁面的訪問時間starttime,

用start_time-start_time得到的結果就是上個頁面(refered url頁面)的停留時長staytime。

然後在這個頁面把上個頁面的username、starttime、pageurl(也就是剛剛記錄的referer url)等字段作為一條pv資料發給發給後台

拿pv資料時sql語句就在時間段內count(),要拿uv資料就distinct username,要拿平均停留時長就累加時間段內的staytime值。然後後續格式方面操作交給前端處理。

2.日期選擇元件的改造。

因為產品要求日期元件datapicker能實現選擇自然日、自然月、自然周的功能,於是我嘗試了幾個關於vue的ui元件庫,主要是elment-ui和iview這兩個

發現都不能滿足,就選了最接近的iview,對於iview-datepicker的改造主要在於熟悉這個元件的官方文件,以及通過檢視dev-tool,並使用jquery來完成元件事件與樣式的定製。

不過還是不能滿足產品的需求,而產品之所以有這樣的需求是因為內部的平台用過這樣的日期元件,後來在產品的幫助下找到了這個日期元件輪子的創造者。我研究了日期元件輪子的**,輪子寫的很好,

我只需要根據我的需要定製我的功能,完成專案後研究了下這個輪子是怎麼寫的,希望以後也能寫出這樣優秀的輪子。

3.echarts的狀態響應與vue的狀態響應的相衝突。

由於介面的問題,導致我需要在乙個方法中去呼叫四次同乙個方法去獲取資料,也就是傳送了4次請求,所以顯示的資料順序是獲得資料先後的順序,然後產品要求餅圖展示的資料需要按順序。

我試過用排序以及用賦值而不是push去解除安裝資料,也使用過promise,都無法處理順序不一致的問題。於是要求後台把4個介面統一到1個介面,這樣就不存在非同步調取的先後問題。

此外解除安裝資料時使用了乙個臨時datatmp物件去解除安裝資料下來,再用push(...data)方式裝到store中的data裡,這樣也避免了echarts和vue狀態響應相關的坑。

4.對echarts中圖表的一些定製。

比如echarts中的餅圖的圖例只能展示名字,而需求是希望能夠展示資料,所幸查了官方文件發現formatter的值可以是函式,於是使用了函式對圖例格式改造了下,使得其能展示更豐富的資料。

還有做柱狀圖時,需要對同一型別的柱子進行顏色的改造,也是利用了color的值可以是函式,所以感覺echarts很強大,自己能夠根據需要定製,當然阿里的antv也很強大。

5.對打包的js檔案的優化。

在沒有做任何優化前,雖然已經分離公共的js檔案,比如momet.js和axio.js單獨打包成js檔案,打包後的datastatistics.js檔案居然還有20m。

後面就找到原因優化了下,主要是對使用的echarts.js進行構建出包含所需功能的echarts.min.js。同時按需引入iview元件。當然分離js檔案,將公共部分的js檔案,

比如momet.js和vue.js和axio.js單獨打包成js檔案。這樣做後datastatistics.js檔案縮小到了7.5m,經過gzip壓縮後發到前端的只有1.5m。

可是還是很大,於是我就找原因,通過注釋import語句後再打包檔案看大小來判斷是哪條import語句出了問題。

發現是引入iview的時候,雖然我按照官網文件使用babel-plugin-import外掛程式去做按需引入,但是實際效果並沒有做到按需引入。我猜測可能是版本的問題,後面我查了下,

配置babel-plugin-import有兩種方式,可以在babelrc裡面,也可以在webpack裡面,但是當前版本下在babelrc裡面配置就會出現不生效的問題。

不過我當時是改寫了import語句,直接引入iview目錄下的對應元件。比如import progress from

'。重新打包後的js檔案只有3.8m,經過gzip壓縮後發到前端的只有900多k,大小減少了很多。

學習平台專案總結

為了以後的面試不至於忘記,覺得有必要做下總結,不然以後忘了很多專案的細節。說下前端部分,我們沒有使用vux來做狀態管理,而是基於flux架構思想實現了自己的狀態管理。總的來說就是 把狀態放到data.js的store裡,把更新狀態的方法也放到data.js裡,再把data.js的store賦值給vu...

CICS平台學習總結

隨著專案的推進,是時候為下一階段的開發工作做好知識儲備工作了,我們系統底層的主要部分部署在cics平台上,而本人負責底層的開發工作,因此有必要系統地學習一下cics平台。以下是我學習cics平台的一些粗略的學習筆記,在此記下以供日後溫習。一 本人對cics的初步理解 說到cics當然需要知道它的全稱...

後裝業務管理平台專案總結

後台傳輸的json資料,這裡為了不影響閱讀,刪除掉了不必要的部分 tenantinfo 這裡後台沒有直接返回樹形結構是由於有多處使用該介面,而只有在該頁面需要做成樹狀圖,所以需要前端處理下資料格式,完成效果如下 大概思路,因為返回的資料中orgcode是有規律的,所以新建兩個map結構,level通...