個人專案 - 記帳本

這是一個使用者可以自行註冊 / 使用第三方等方法登入的記帳工具,是 side-project 的雛形。

為什麼會選擇這個專案

身為一個熱愛自己動手做實用的軟體工具的工程師,在 MVC 架構下,可以好好練習 CRUD 的各種變化,也是一個可以好好玩各種可能性的練習,在練習的過程中加入一些新套件的實驗與應用,是最有趣的部分。

所以對我來說,只要是日常需要的軟體工具,都是一個選擇專案的原因。

使用什麼技術

這次專案的開法是以 Express 為全端開發,Handlebars 處理畫面 ,資料庫是使用 MongoDB ,這次專案的新嘗試是 Passport 套件的 Facebook / Google 登入。

對於技術掌握與專案檢討

專案有甘有苦,這都是人生啊

Express CRUD 的架構算是滿清楚的,專案的建立也是從『支出花費』的 CRUD 開始建立,難度不是很高,從第二第三個 Model 關聯性的建立,難度變成要怎麼向 MongoDB 取得所需資料。主要是自己對於 asynchronous 非同步的處理不熟悉,導致花了很多時間在『 咦?!資料為什麼沒跑出來 』,後續需要對於非同步的觀念在加強。

當然中間也很多不知道怎麼下手的功能,時常需要看看其他人怎麼做,抓出程式邏輯,再看看以目前已經進行的方向要怎麼調整。或是利用一些關鍵字,例如我在實作的時候,有個功能是篩選出「類別」,需要再使用者篩選後, option 會停留在篩選的結果。這個我卡了好一陣子,也是這次專案中新嘗試的小套件,列出幾個搜尋關鍵字,關鍵字的邏輯是使用哪個套件,在那裡遇到,關鍵字如下:

  • handelbars -> view 使用的套件

  • select -> HTML 標籤

  • option -> select 下的選項

  • selected -> select 被選 的屬性

    結果終於找到,[用 Handlebars 做出保留原始資料的資料][handelbars-helper]
    [handelbars-helper]: https://ithelp.ithome.com.tw/articles/10242260

都成功顯示畫面,不過我又落入沒有設定停損點,導致花了很多時間在問題打轉。

最後是專案需求,有時候自己做一做專案很開心,一個不小心就離主軸目標越來越遠,等到要拉回來的時候,花了很多無謂的時間在 debug ,得不償失。

總結

永遠不會有完美的專案,總是有優化專案的空間
[專案 GitHub 連結][github]
[Heroku 試玩][heroku]
[github]: https://github.com/Kris3131/expense-tracker
[heroku]: https://peaceful-retreat-01550.herokuapp.com/users/login