廣志美冴的家庭記帳本(登入憑證、關聯性資料、async await練習)[Alpha Camp學期 3後端第二週]
專案介紹: 一個以使用者登入方式擁有的私人記帳本,可以自建帳號也可以用FB、Goggle帳號登入。 記帳本除了瀏覽所有支出細項外,可以很方便的新增、編輯、刪除一筆支出,也可以依分類簡單看出該類別花費金額。 你為何會選擇這個專案? 做一個自己順眼的記帳本幫助自己日常開銷紀錄和控管。另外記帳本有資料庫CRUD、身分認證等需求,對於學習相關套件和語法是個還不錯的練習。 你使用了什麼技術或套件? 除了Node.js、Express.js基礎框架外, 使用express-handlebars樣板處理畫面渲染,並搭配connect-flash讓partial handlebar做訊息警示 使用method-override實現CRUD路由RESTful語意化 使用mongoose物件映設連線MongoDB資料庫 使用dotenv設定統一放置環境變數,並以.gitignore隱藏避免個人設定外洩 使用passport及相關local、facebook、google策略進行身分驗證 使用bcryptjs密碼雜湊,增加資訊安全性 使用bootstrap和font awesome美化也簡化CSS樣式 使用async await語法糖搭配promise all,優化callback hell槽狀結構由外向內問題,讓程式碼由上到下更簡潔易讀 使用MVC架構,增加功能獨立性 使用heroku佈署網頁 哪部分你相對能掌握?哪裡花了最多時間? 對於 各個套件的語法雖然不能直接默寫出來,但查閱文件後都還算能掌握。另外對於promise的.then().catch用法相當熟悉,與資料庫的溝通、model建立、種子資料設計和資料關聯性都還算順手。 在這個專案裡,讓我花較多時間的除了bootstrap切版外,就是async await語法糖的用法,發現這種寫法讓程式碼更簡潔容易閱讀,特地先查找資料學習後再回專案裡練習,中途還一度發現沒有catch到error訊息,再重新翻找相關資訊學到try catch語法。 過程中碰到什麼困難?又如何克服?(例如:查找網路文件) 由於很多套件都是新學,常遇到語法不熟悉的狀況,我就常在網上查找相關文件和討論範例。像是課程中提到LocalStrategy和FacebookStrategy語法,但我在做專案時還想多加GoogleStrategy,於是就多花點時間從原始文件和