這一週的作業繳交時需要附上底下餐廳專案的網址,你可以選擇:
- 部署到免費空間 heroku
- 部署到自己買的主機(推薦)
請把第六七八週寫的那個餐廳網站移植到 Express 上面(就像第十週 show time 那樣,把整個變成一個網站),因為這週的其他兩個作業都會需要先把餐廳網站移植過來。
另外,上一週寫的抽獎後台也請放進這個專案當中。
簡單來說呢,你要做的就是用 Express 打造一個餐廳網站還有餐廳後台,但應該會有大部分的資源都可以沿用之前的作業。
設計稿:https://app.zeplin.io/project/5eab7fd61be0341bdeed0db0/screen/5ef4ac17650383802281e906
(可以忽略購物車相關的部分,那是挑戰題)
這是之前的餐廳網站其中一個沒有做的頁面,也就是 menu 頁面。
有看到底下那些品項嗎?包含了:
- 名稱
- 價格
- 圖片
而你的任務就是要在後台加上一個頁面,讓管理員能夠輕鬆管理這些品項,必須要能夠:
- 新增品項
- 刪除品項
- 編輯品項
而前台的頁面也必須顯示出這些品項。
有關於上傳圖片的部分請參考 week17 的延伸挑戰題,如果上傳圖片不好做的話,也可以改成填入圖片網址就好。
還記得我們在第七週做的常見問題頁面嗎?那時候是直接把內容寫在 HTML 裡面寫死,這種行為我們稱做 hard code,缺點就是沒有辦法動態修改。
那要怎樣才能動態修改呢?就是把這些問題的標題跟內容放在資料庫裡面,然後在程式中載入進來。這樣做的話,也能在後台新增一個頁面來管理這些常見問題的標題跟內容,就能夠動態修改了!
因此呢,這個作業的需求如下:
- 身為一個管理員,我希望常見問題的內容可以儲存在資料庫,這樣我才能方便修改
- 身為一個管理員,我希望管理後台可以管理常見問題,這樣我才能方便修改
- 身為一個管理員,我希望在後台可以新增常見問題,會有標題跟內容以及順序
- 身為一個管理員,我希望在後台可以編輯常見問題,包括標題跟內容以及順序
- 身為一個管理員,我希望在後台可以刪除常見問題
- 身為一個管理員,我希望前端頁面的資料是從後端拿的,這樣才能跟後台連動
簡單來說就是要做個後台可以管理常見問題列表,然後在前台的部分動態載入這些資料。
- 什麼是反向代理(Reverse proxy)?
- 什麼是 ORM?
- 什麼是 N+1 problem?
請將答案寫在 hw4.md。
學習系統的後端就是用 Express + Sequlize 寫的,有興趣的話可以研究一下程式碼:Lidemy/lidemy-learning-backend
其實原本的課綱規劃裡面是有個購物車以及訂單的功能,但是礙於時間因素以及其他考量,暫時把它拿掉了。
設計稿都在 zeplin 上面:https://app.zeplin.io/project/5eab7fd61be0341bdeed0db0/screen/5ef4ac0c2409f97a972078f2
如果你有餘裕的話,也可以試著自己把購物車以及訂單功能給實作出來。
請試著加上「email 通知」的功能,在訂單成立以後會寄一封信給使用者,信裡面提供訂單資訊以及一個連結,點了連結之後可以查看訂單資訊。
有關於寄信,你可以試著研究以下的服務:
請試著串接金流服務,讓結帳頁面真的有結帳的功能(可以用測試帳號來串接,就不會真的收錢)。
關於金流服務,可以參考以下幾間: