iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
Vue.js

完成_個人健康習慣追蹤相關功能網站系列 第 8

第一次階段性測試 + 小修優化

  • 分享至 

  • xImage
  •  

今天的核心任務不是「新增新功能」,而是 整理、優化、驗收,今天是專門拿來優化程式碼 + 改善體驗 + 做里程碑紀錄的日子!讓前面累積的程式碼變乾淨、好用、減少 bug,沒有急著加新功能,反到先幫網站做優化處理,就像是剛剛住進新房子一小段時間一樣,開始發現:燈光是不是太暗?插座是不是該加個保險絲?所以今天的任務,就是把前七天的成果做一次全面驗收,並且小修小補,讓這棟小房子更穩固!
1.程式碼優化:
(1)App.vue
a.localStorage 安全讀寫:以前是直接 JSON.parse,但如果資料壞掉會整個炸掉。現在加上 try/catch 和基本 schema 檢查,壞掉的 JSON 會自動清掉,不會害網站整個壞光光。

b.寫入節流:以前只要任務清單一有更動,馬上就會寫 localStorage。現在加一個 200ms 緩衝,避免它太勤勞,才能使效能更穩定。

c.id 產生更穩:把 Date.now() 換成 crypto.randomUUID()(有後備),就算使用者瘋狂連點,也不怕撞 ID。
(2)TaskList.vue
a.輸入框升級:改成 <form @submit.prevent>,讓使用者按 Enter 也能新增任務。

b.空白任務防呆:按鈕會在空白時自動 disabled,這樣就不會再出現「一堆空白項目」。

c.刪除按鈕無障礙:加上 aria-keyshortcuts="Delete",讀屏工具會提示使用者能用刪除鍵。

d.空清單提示:加上 aria-live="polite",畫面更新時能即時朗讀。

2.樣式大掃除
經過驚天的優化檢查,才發現之前 TaskList.vue 裡的 CSS ,跟全域 style.css 有點一咪咪撞到了!所以稍稍做了調整:
a.通用樣式(卡片 .card、新增列 .row.add、按鈕 .btn、列表 ul/li) → 全部搬到全域 style.css。

b.元件獨有樣式(任務完成刪除線、刪除按鈕 hover 紅底、空清單提示、長字自動換行) → 留在 TaskList.vue。

結果做完之後,程式碼變得更乾淨,假使日後要加新頁面(例如 About 頁),風格也會比較自然統一,另外,Footer 也做了一個小升級:年份自動顯示 © 2025,不用再手動改!

3.測試驗收清單
a.新增/勾選/刪除都正常。

b.重新整理後任務仍在。

c.連續快速操作不卡頓(節流生效)。

d..超長任務標題自動換行,不會爆版。

e.空白任務按鈕 disabled,空清單有提示。

這就像幫房子做了一次「水電測試」+「家具擺整齊」,住起來更安心。
4.學到的重點
a.localStorage 只能存字串,要配合 JSON.stringify / JSON.parse。

b.錯誤防呆很重要:壞資料要能自動復原。

c.程式碼職責分明:共用樣式放全域,元件只管自己專屬的部分。

d.小小的 UX 提升(Enter 新增、防空白、無障礙)會讓使用者體驗好很多。

雖然今天的畫面和昨天的差不多,但程式碼部分到是有條理了許多,希望透過今天的整理,在之後的挑戰中能更加順利!


上一篇
localStorage 保存任務(頁面刷新資料仍存在)
系列文
完成_個人健康習慣追蹤相關功能網站8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言