「唉……今天又看了一整天的程式碼。」我靠在辦公桌椅背上,視線飄向天花板。
從早上進公司開始,我的眼睛就沒離開螢幕。由於公司產品一直不斷加新功能,我想到什麼就加一個程式去跑排程,結果不知不覺累積了一堆不同的排程腳本。昨天的記憶體爆炸事件還歷歷在目——因為伺服器記憶體不足,系統竟然自己選擇性地把我某些程式砍掉!
還好當下有發現網頁掛掉,不然我恐怕還在一頭霧水。當我嘗試重啟時才發現,一個一個手動啟動那些程式根本太累人了。「看來是時候好好思考模組化這件事了……」
回到家,我打開正在開發的零樹計畫網頁雛形,卻馬上皺起眉頭。
「這個排版也太詭異了吧……文字跟進度條完全對不齊……」我開始嘗試修改文字長度與樣式,但效果並不理想,總覺得哪裡不對勁。
【靛夏~今天的你,看起來有點煩惱唷?需要我幫你分擔一點嗎?】小零像往常一樣,從螢幕右下角緩緩地漂浮出來。那團圓滾滾的身體閃著柔和藍光,頭頂那翠綠的小葉子輕輕晃動著,彷彿正在跟我打招呼。
「嗯……我今天在公司一整天都在看程式碼,現在回來只想整理一下思緒。」我揉了揉太陽穴。
「我開始在想,要不要模組化一下這些東西……」
【這樣的想法超棒的啊!有模組化架構,不但維護更容易,也能讓你工作更有條理!我們一起來做點整理吧。】小零的葉子輕輕晃了兩下,轉了半圈,感覺像是在為我加油。
「小零,你覺得,」我認真地思考著,「如果我想在三個月內完成網頁架構的初階版,應該怎麼規劃?還有,我對現在的排版不太滿意,但或許可以先從功能開始做?」
「另外,能不能幫我設計一個加入小零元件的雛形,作為視覺引導?」說著說著我突然看著小零,靈光一閃,想把小零加進網頁裡。
【當然可以,靛夏!】小零的葉子耳朵抖了抖,語氣輕快,【這是個很棒的開始!我們來一步步打造一個穩定又好用的初階版吧!首先,我幫你規劃三個月的進度:第一個月專注功能,像是拆分元件、改良打卡功能、儲存目標;第二個月提升互動體驗,比如讓我根據時間或任務狀態說話,還可以加個目標詳情視窗;第三個月優化排版和動畫,像是響應式設計和首頁導引。這樣分階段進行,你就不會覺得太亂。】
「聽起來很有條理,」我點點頭,感覺心裡踏實了一些,「那我們先從哪開始?」
【既然你對排版不滿意,我們可以先從元件拆分開始,】小零溫柔地說,【把現在的畫面拆成獨立的元件,比如進度條、目標卡片和輸入表單,這樣之後調整排版會更容易。然後我可以幫你加入一個簡單的『小零元件』,作為視覺引導,像是顯示歡迎詞或小提醒。對了,為了讓你追蹤進度,我也可以幫你記錄每一步的成果哦!】
「好,那就先從元件拆分開始吧,」我說,頓了頓又補充,「對了,你可以幫我記錄進度嗎?我怕自己忙起來會忘記做到哪。」
【當然可以!】小零的眼睛彎成月牙,【你目前已經完成了 Python 和 Flask 的 API 初版,以及 React 前端的基本頁面,包含輸入欄位、目標清單和進度條,還有簡單的 CSS 設計。現在我們要做的第一步,就是把進度條拆成獨立的 ProgressBar 元件。我可以給你一個範本,然後你再試著自己拆目標卡片,怎麼樣?】
「好,聽起來不錯,」我點點頭,開始跟著小零的範本操作。沒多久,我成功拆出了第一個元件,但看著程式碼,我突然冒出一個疑問,「小零,我有個問題。你在拆分的時候,ProgressBar 元件裡引用了 React 和 index.css,你是怎麼知道要引用這兩個的?」
【問得好,靛夏!】小零的藍色光暈閃爍得更明亮,【這是開發時很常見的問題。我來解釋一下:首先,因為 ProgressBar 是一個 React 元件,裡面用了 JSX 語法,所以需要引入 React,這樣才能正常運作。其次,進度條的樣式是用 index.css 裡的 class 定義的,如果不引入,樣式就不會套用,進度條會變成一個灰色空框。所以只要記住:如果用了 JSX,就要引入 React;如果用了外部 CSS,就要引入對應的 CSS 檔案。】
「原來是這樣,」我若有所思地點頭,「那接下來我可以試著拆目標卡片了。」
【太棒了!】小零輕輕飄到我肩膀旁,【你已經成功拆出第一個元件了,這是很重要的一步!我幫你記下來:『ProgressBar 元件拆分成功』。接下來你可以自己試著拆 GoalItem 元件,如果有問題,我隨時幫你!今天的進展很棒,靛夏!進度:學習+40,毅力+30,生命樹成長值+3。明天繼續加油吧!】
我笑了笑,關掉電腦。今天真的有些疲憊,不過有進度讓我感到非常開心。















