學生實作包 · 28 章

從空資料夾,到可驗收的商用網站與連續電商專案。

每章保留 180 分鐘主課,再依學習成果自主完成 micro Lab、整合 Lab 與驗收證據;進度以能做到什麼為準,不以倒數計時。

28 章主課111 個自學主題Vue 3 CDNCloudflare Pages

LESSON-23–28 · 連續專案

從規劃到 GAS/Sheet 的運動器材電商

六章共用同一份鐵刻運動專案:商品、localStorage 購物車、訂單、聯絡表單、GAS 測試契約、server-authoritative totals 與 release smoke。

開啟運動器材電商

預設 endpoint 空白時只跑 local mock,不送出 POST;真實 GAS 與 Sheet 只能使用測試部署及測試資料。

28 章練習地圖

Solution 是參考答案;各章卡片可直接進入 examples/supplement/index.html 完成自主學習。

LESSON-01 · 3 個自學主題

建立可預覽、可除錯的前端檔案結構

服務型商家的網站剛開始製作,今天只建立一個可以預覽與除錯的三檔案小專案;圖片素材先不加入,避免把尚未教的路徑問題混在一起。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-02 · 4 個自學主題

用 HTML 語意建立服務型商家首頁骨架

客戶只有一段商家介紹與服務資訊,先用兩個 HTML 檔案建立能閱讀、能前往下一頁的首頁骨架;本堂不加入 CSS、JavaScript 或框架。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-03 · 4 個自學主題

用相對路徑與表單欄位完成多頁網站骨架

商家不只需要首頁,訪客還要能進入服務、關於與聯絡頁並留下需求。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-04 · 4 個自學主題

理解 selector、cascade 與規則套用順序

首頁 HTML 已經有內容,但品牌色、卡片與 CTA 尚未套用;需要精準指定要改哪一類元素。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-05 · 4 個自學主題

用 content、padding、border、margin 與 box-sizing 控制服務卡片尺寸

先在 index.html 建立三張服務卡片,再觀察 padding、border 與 width 如何改變實際盒子;最後用 box-sizing 修正 390px 手機畫面的水平溢位。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-06 · 4 個自學主題

完成一張服務型商家卡片的字型、文字階層、色彩、背景與窄版可讀性

商家已有一張服務卡片,但標題、說明文字、按鈕與狀態提示還沒有一致的閱讀階層;本堂只處理這張卡片的內容呈現,不延伸到多頁、框架或版面排列。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-07 · 4 個自學主題

用 Flexbox 排列導覽列、頁首與服務卡片

品牌樣式已完成,但導覽與服務摘要仍像垂直清單,需要在不同寬度下保持可用排列。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-08 · 4 個自學主題

整合共用容器、Hero、服務摘要與 CTA 成為首頁

單一區塊都已會排版,現在要把它們組成訪客一進站就能理解並採取行動的首頁。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-09 · 4 個自學主題

用 CSS Grid 建立可伸縮的服務型商家版面

首頁服務資訊開始增加,單純 Flexbox 不容易表達主卡片與側邊資訊的二維關係。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-10 · 4 個自學主題

用 Mobile First 與 Media Query 讓服務型網站適應不同寬度

服務商家的訪客可能用手機、平板或桌機進站,固定桌機欄位會讓手機操作困難。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-11 · 4 個自學主題

用 Position 控制元素參考點、捲動行為與前後層級

商家希望在服務頁標出推薦方案,並讓聯絡入口在長頁面中保持可找到。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-12 · 4 個自學主題

用狀態樣式與鍵盤操作讓表單和按鈕可理解

聯絡頁看似完成,但使用鍵盤或填寫錯誤時,訪客不一定知道目前焦點與問題在哪裡。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-13 · 4 個自學主題

用 class、狀態與 transition 做出可驗收的按鈕與服務卡片回饋

服務型網站的 HTML 已經能顯示內容,但按鈕和卡片的狀態切換太突然;本堂只處理 CSS 狀態變化、簡短 animation 與使用者的減少動態偏好。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-14 · 4 個自學主題

用值、型別、變數與函式把服務資訊整理成可顯示的結果

服務型網站需要根據訪客操作顯示一段清楚的服務資訊;本堂先用原生 JavaScript 建立最小的輸入、處理與輸出流程。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-15 · 4 個自學主題

用陣列與物件整理服務資料並產生可用結果

商家不只一項服務,資料若散落在多個變數中,新增方案與篩選都會變得困難。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-16 · 4 個自學主題

用 DOM API 將服務資料安全地渲染到頁面

服務資料已經整理好,現在要讓頁面依資料產生卡片,新增資料時不用手動複製 HTML。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-17 · 4 個自學主題

用事件監聽完成行動版選單與 FAQ 開合

多頁網站在手機上需要可開關導覽,FAQ 也要能讓訪客逐項展開而不重新整理頁面;本堂先用一個入口頁和一個目的頁,讓每個狀態都能在瀏覽器中看見。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-18 · 4 個自學主題

掌握表單驗證、preventDefault 與非同步狀態流程

聯絡表單不能直接刷新頁面消失,訪客需要知道送出中、成功或失敗的結果。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-19 · 4 個自學主題

用 Vue 3 CDN 建立 createApp、setup 與 mount 的最小流程

網站先需要一個可由瀏覽器直接開啟的 Vue 入口;本堂暫時只把靜態服務介紹交給 Vue 渲染,不先處理互動狀態。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-20 · 4 個自學主題

用 ref、computed、v-for 與 v-if 管理服務清單畫面

服務資料需要依搜尋或分類變化,手動操作 DOM 會讓畫面與資料逐漸不同步。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-21 · 4 個自學主題

用元件、props 與 emits 建立清楚的資料流

服務卡片越來越多,若全部寫在同一個 template,修改一張卡片容易影響整個頁面。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-22 · 4 個自學主題

用 v-model、watch 與生命週期整理 Vue 表單狀態

聯絡表單需要同時處理輸入、載入、成功、失敗與重試,狀態若沒有規則會讓按鈕卡住。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-23 · 4 個自學主題

定義運動器材電商需求、資料模型與驗收矩陣

第 23–28 章共用同一個 project/e-commerce;本堂先固定頁面、使用者任務、商品/訂單/聯絡資料欄位與逐章驗收證據,只做規劃,不寫 fetch、不連 GAS/Sheet、不部署。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-24 · 4 個自學主題

建立黃色/鐵灰品牌 shell、首頁與商品入口

資料契約已固定,現在於 project/e-commerce 建立六頁共用導覽與首頁;黃色負責品牌與主要行動、鐵灰負責文字與表面,只用少量紅色標示特價。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-25 · 4 個自學主題

完成商品目錄、購物車、checkout 與聯絡表單的離線 mock

品牌 shell 已完成;本堂只使用本地商品陣列、localStorage 與 mock 回應,完整走過選商品、購物車、填訂單與聯絡流程,嚴禁 fetch、GAS endpoint 或 Sheet 寫入。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-26 · 4 個自學主題

建立 GAS 商品 GET、訂單 POST 與聯絡 POST 契約

離線流程已能操作,現在用一個 Apps Script Web App 依 action 分流:doGet 讀商品,doPost 接訂單或聯絡;前端與 GAS 共用固定欄位、JSON 回應與測試 endpoint,且不把 Spreadsheet ID 或秘密放前端。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-27 · 4 個自學主題

固定 Sheet schema、伺服器權威計價、去重與完整狀態

API 契約已接通;本堂由 GAS 以 Products Sheet 的有效價格重新計算商品總額、運費與訂單總額,再以 LockService 和 submissionId 防止重送,並讓前端呈現 idle/loading/success/error/timeout。

180 分鐘主課+依學習成果逐項完成的自主學習

LESSON-28 · 4 個自學主題

交付 dist/project/e-commerce production artifact 與本機 smoke

六章功能已完成;本堂只整理唯一可部署 production artifact,驗證六頁、商品圖片、購物車、兩種表單、GAS 設定說明、SEO、390px 與鍵盤路徑;六頁 canonical/OG 與 robots/sitemap 先保留一致 placeholder,部署前須同批替換,不建立或更新任何遠端部署。

180 分鐘主課+依學習成果逐項完成的自主學習