小白開發程式的一天

2022-11-04 15:01:03

技術背景,前後端分離,前端 vue 後端 .Net Core

小白有一個需求,在他費盡千辛萬苦之力,寫了N行sql才完成的彙總資料包表中,根據表頭和首列類別定位的單元格上新增點選事件。點選單元格後,跳轉至彙總資料的詳細列表。經其分析,詳細列表本身帶有高階篩選功能,篩選時,會在表格上方顯示篩選條件。所以,小白決定點選單元格跳轉到詳細列表頁的同時帶上引數做為篩選條件。

因為,詳細列表頁面為某位大哥開發,已經具備了一定的程式碼和基礎。所以充分了解其已編輯程式碼,在其基礎上開發可以達到寫最少的程式碼量,減少不必要的重複的目的。

小白首先寫了一個測試的url,在url中帶入了測試的引數資料。然後在頁面用某位大哥的方式

$route.params.name

接收引數時,發現接收不到。小白對 vue 沒有經過深刻的系統的學習,只是根據教學籠統的學習過,再經過各種專案的洗禮。雖然可以說對 vue 非常熟悉,但對於細節的技術點,還是沒有把握。不過小白是一位愛學習的好孩子,經其努力補充上了此技術點。獲取route引數的方式有下面兩種:

$route.query.name
$route.params.name
//name 為引數名

其中query寫入引數的方式為

{name: '路由名', query: {引數名:值}} 
或者 
{path:'路由地址', query: {引數名:值}}

 此種方式類似於http請求的GET方式。

其中params寫入引數的方式為

{name: '路由名', params: { 引數名: 值 }} 
或者 
'/path/引數1/引數2'  此種方式需要在路由中的path指定 :引數名成,確認引數1、引數2的是ID還是Name

此種方式類似於http請求的POST方式

最後通過push的方式壓入route即可

$route.push(obj)

解決完引數傳遞的方式之後,小白髮現,由於高階篩選正常情況下是通過手動點選後,記錄篩選條件到 tag,tag 繫結到表頭的 dom 。

其中表頭的元件又是參照到列表頁面的,所以小白考慮在 created 中構造 tag,然後以屬性的方式傳遞至表頭元件。

這種方式雖然可以實現效果,但是在小白寫完程式碼測試過程中,發現之前的開發大哥已經寫過型別的功能,並且是在mounted中使用nextTick實現的。

經對比小白慚愧不已,發現自己不光有知識盲點,還對頁面的載入過程不甚瞭解。

使用nextTick不光在頁面的Dom元素載入完畢後可以非同步的更新資料,還要比把構造 tag 放到 created 中優雅的多。

檢視nextTick說明,更是覺得nextTick是專門為處理此任務而生

nexttick使用場景:有時需要根據資料動態的為頁面某些dom元素新增事件,這就要求在dom元素渲染完畢時去設定
在使用某個第三方外掛時 ,希望在vue生成的某些dom動態發生變化時重新應用該外掛,也會用到該方法。

 解決完這兩個問題,小白想起最近讓寫的一些簡單的Go指令碼程式。小白雖然白了點,但是技術面還是可以的,不光大學的專業就學過多種語言(只能是學過,學完就還給老師)。應大佬要求,瞭解了一些Go的知識後,使用Go寫了一些簡單的小程式。

但是在剛剛開始寫一個以上檔案時,小白遇上了,他覺著很多自學初學者都會遇到的問題,參照包!預設情況下Go的參照路徑是Go的安裝路徑,具體路徑可以看錯誤提示,會提示在某個路徑下找不到所要的包。小白又經過一番努力,發現了go.mod,按官方介紹其就是一個Modules。使用方式很簡單:

在專案的根目錄下使用命令

go mod init modname 

此命令將參照目錄指定到當前專案目錄。
需要注意的是建立的每個包,都需要建立相同名稱的資料夾,在資料夾內建立go檔案。
參照時一般使用 modname/packname 即可。

小白記錄完這些問題之後興致很高,於是乎,小白將其半年前做單點登入時收藏的幾篇文章又做了一個總結:

有關單點登入,小白已知的單點登入協定主要有 CAS OAuth OIDC

根據多種單點登入方式的協定可知,單點是一種協商後的登入方式,各方按照相關協定開發登入驗證模組,並接入單點系統即可實現單點登入

對於前後端不分離系統,使用Session Cookie做單點登入

對於前後端分離系統,通常使用token localStorage的方式開發。

下面舉個實際的例子,比如:

拿CAS來說,新接入系統首頁加入登入驗證,如果未登入,即跳轉至單點登入系統,並以引數的方式帶入回撥地址。

在單點登入系統登入驗證成功之後,形成票據,同樣以引數的形式跳轉至回撥地址。

新接入系統獲得票據(ticket)之後,將票據傳遞至後臺。後臺API呼叫單點登入系統介面驗證ticket。

驗證通過後,形成自身系統的登入驗證token或者說Session,之後新接入系統即可存取自己系統的後臺,每次存取都帶有驗證資訊。

以上是小白同學,一天中所學的知識點,不歡迎批評,歡迎吹水