終於來到了學期二之3,這學期的目標是以產品開發的思維來對待每一個練習專案,也從這學期開始分前、後端,前者著重於切版的練習、後者則著重在資料庫的學習。這四周是到目前為止最累的四周,稍微一分心,龐大的作業量就如滔滔洪水直奔遠方了,難追呀!
前言
學期 2-3 從 Nov. 22 開始四周,這 1 個月只能用「辛苦」二字陳述 (扶額) 😓
- 第一周就是滿滿的開發工具,學習使用 Express 框架打造有搜尋功能的「電影清單」和「餐廳列表」。
- 第二周學習 CSS 的排版系統 Flexbox、Grid 以及「毛小孩電商網頁」切版。
- 第三周接續第二周跟著助教完成「毛小孩電商網頁」切版、自行完成一份電商網頁的切版,並學習如何介紹自己的作品。
- 最後一周學習 Sass與修改 HTML 的 Form 元素的 css 設計,同時強調注重 css 的易讀性與易維護性下,跟著助教打造出「網紅廣告服務平台」。
![](https://i.imgur.com/1hCzDy9m.png)
心得
關於自學
授人以魚,不如授之以漁。
前幾個學期的上課模式多是一個語法讓你重複練習很多次,或是一個觀念理解,很多時候看 AC 自己的教材就能夠理解八-九成,作業通常也會有 model answer,甚至可以靠自己就完成規格要求。
然而,這學期的課程和作業有個特色,前者,因為課程有大部分是跟著助教做出一個專案,所以就是看助教用自己決定的方式寫出一個專案,這其中所運用到的語法、技術,除了很明確的主題,例如 Grid、Flexbox,其餘都是迅速帶過,如果要深入探討那就是自己的功課。後者,規格的要求不再如此具體,只要有符合大方向的要求,結果一樣就好,意思就是說有很多做法可以達成,端看自己的選擇,可以用之前在 AC 學過的也可以用任何你想到的方式。
因此會有很多機會靠自己發現問題,覺得這個地方好像不太一樣,或是說在助教示範的情境下好像沒有帶過,是個雖然工具相同但陌生的案例,這時候都需要停下來自己額外學習。
當然啦!完全照抄,不去思考背後的問題,助教寫什麼就做什麼當然也可以結束這一回合,全部都用已知的方式解決也完全沒問題,但難免稍嫌可惜,白白浪費一個學習的機會。
有一句不太政治正確的話「天底下只有懶女人,沒有醜女人」(不過我是女性,罪惡減輕一半?),我覺得這句話用在自我學習者上一點都不違和,網路上有極其豐富的資源,即使你從未看過,關鍵字一輸入,Enter 按下去,很容易就能暢遊在各式各樣的回答中。
自學經驗分享
趁著記憶猶新,在這裡留下自己最近一次解決問題的經驗,這是一個小到不足掛齒的問題,卻也能證明自己有在慢慢地為自己染上網路開發者的血液。
發現問題
故事是這樣的,我在繳交技術驗收功課時,需要用 Express web 框架做出一個簡易的網路應用程式,設定四個路由;第一周的教案內容「電影清單」完全是用 bootstrap 來做設計,所以只有學習到要怎麼在 Express 載入靜態檔案,而沒有學習到要如何在不同 route 套用各自的 CSS 樣式,我的問題是:如何在 Express / handlebars 中套用自己的 CSS 檔案?
自主嘗試
首先就先嘗試了一下舉一反三法:
- 在本地專案資料夾中建立一個資料夾「public」,用來放置未來的 javascript 和 CSS 檔案,為此再建立一個資料夾「css」,把自己寫的 css 程式「style.css」存在這裡(路徑為:public/css/style.css)。
- 在 Express 導入靜態檔案要在 app.js (main field) 輸入:
app.use(express.static('public'))
- 在 default template engine (本專案是用 handlebars) 中用 link 導入路徑:
<link rel="stylesheet" href="css/style.css">
這樣就可以完成自己的CSS檔案導入,但如果要個別頁面採用不同的 CSS 檔案呢?
開啟搜尋
想到這裡,當然我也可以在個別頁面加入不同的 class name 來達到在同一支 CSS 檔案寫好全部選擇器的樣式,來完成需求,不過把想法複雜化,可以幫我們多了解其他的解決方式。
所以我就用了關鍵字「Express」+「handlebars」+「css」進行搜尋,參考了以下幾篇文章:
使用express框架,如何在ejs文件中导入外部的js、css文件
Unable to include CSS styling in handleBar templates with Node Js App
不過呢,這些都跟我自己前面所想到的方法相去不遠,直到我看到了這個影片:
裡面有提到一個做法是在路由設定中加入 style 的設定:
// route setting
app.get('/about', (req, res) => {
res.render('about', {
style: 'about.css',
})
})
就可以在套用多個 css 檔案囉!
關閉和收斂
最重要的就是這個關閉搜尋模式,我已經找到類似我想知道的事情,我就停止搜尋了,因為再繼續找下去大概有 9 成的機率會開花吧!既然我這次的目的不是要成為 handlebars 或 Express 大師,解決一開始的問題:
如何在 Express / handlebars 中套用自己的 CSS 檔案?
搜尋就可以停止了,最後把上述資料收斂,試做功能,結束這一回合。
結論
學期 2-3 這四周過完,沒有結束的感覺,反而像是看了一部前導片,告訴你前面那是高聳的山;這是無底的湖;遠處是延綿不絕的沙漠,同志們,抬頭挺胸,歡迎來到網頁開發的世界。
在此雙手合十,祈求 CY 同志的未來,一片光明🙏。