AC - Dev C2 前端開發實作 經驗回顧

閱讀時間約 5 分鐘

C2 開始終於使用到 visual studio code,
這個階段學到 JavaScript 核心概念、DOM 操作、API 串接、MVC 架構,
每天都在 coding,每週都在追進度,
用壓縮到極致的時間寫完作業,

但跟著課程內容寫程式碼,真的有學到嗎?

有,吧。
畢竟在寫最後的電影清單作業,遇到不少挫折,
在經過不斷反思,回頭翻筆記跟課程講解,
反而有種在失敗中成長的感覺。

電影清單畫面:


最煩惱的問題:收藏按鈕的樣式失效

一開始模式只要切換,或是使用搜尋功能,
已經加入收藏的電影,又會渲染成初始樣式,
而不是像圖片裡看到的,按鈕會變成紅色x。

直覺就是跟收藏功能相關的函式:

addToFavorite(id) {
const list = JSON.parse(localStorage.getItem('favoriteMovies')) || []
const movie = movies.find((movie) => movie.id === id)
if (list.some((movie) => movie.id === id)) {
return alert('此電影已加入收藏清單')
}
list.push(movie)
localStorage.setItem('favoriteMovies', JSON.stringify(list))
}

我看著這段程式碼,
想用 classList.add() 把樣式加上,
腦子卡了好幾個小時,卻百思不得其解,
不知道要怎麼抓 DOM 節點,

如果是在渲染畫面的時候,更改 innerHTML 呢?

於是我將目標轉向渲染畫面的函式,也許這裡有突破點:

renderMovieGallery(data) {
let rawHTML = ''
data.forEach((item) => {
rawHTML += `
...
<button class="btn btn-info btn-add-favorite" data-id="${item.id}">
+
</button>
...
`
}
})
dataPanel.innerHTML = rawHTML
}
如果是我會怎麼做?
如果我遇到類似情境會怎麼做?

假設我有一堆書要上架,有些有折扣、有些沒有,
而我的工作就是在上架前,把折扣貼紙貼在對的書上,
讓顧客一看就知道哪些有優惠活動。

那我會這麼做:
去查看工聯單寫著哪些書有折扣,一邊比對一邊貼上貼紙。

而在程式碼裡面,把收藏電影的資料放在 localStorage,
可以用來比對資料(工聯單),
要在渲染畫面前(上架前),先比對是不是收藏過(查看工聯單比對資料),
把樣式修改(貼上貼紙)後再渲染出來。

renderMovieGallery(data) {
let rawHTML = ''
const list = JSON.parse(localStorage.getItem('favoriteMovies')) || []
// 把要比對的資料抓出來​ 存在 list 中

data.forEach((item) => {
// 用迴圈比對 data 裡面的​項目

if (list.some((movie) => movie.id === item.id)) {
// 如果在 data 的項目符合 list 裡的收藏
// 把按鈕渲染成已加入收藏的樣式
rawHTML += `
...
<button class="btn btn-danger btn-remove-favorite" data-id="${item.id}">
x
</button>
...
`
} else {
// 如果不符合 則渲染成初始樣式
rawHTML += `
...
<button class="btn btn-info btn-add-favorite" data-id="${item.id}">
+
</button>
...
`
}
})
dataPanel.innerHTML = rawHTML
}

回頭試跑網頁,按鈕可以正常使用,
不枉費我卡了一整個下午..


從 C1 一路上到了 C2,
知道要寫出漂亮 CSS 樣式的方法有很多種,
也知道做出 JavaScript 的功能有很多方法,
對我而言最困難的不是語法、物件與陣列或MVC 架構,
而是如何拆解問題。

換個角度思考,自己會怎麼做?
再把作法切成微小的步驟。


4會員
12內容數
本來是理科生,在被物理放棄之後成為了文科生,有時理性思考,偶爾卻會脫口出感性的字句;喜歡打字的聲音,以生活為靈感寫下過去、現在與未來。
留言0
查看全部
發表第一個留言支持創作者!
碎碎念 的其他內容
你可能也想看
AC電源市場:分析セグメンテーションは、X+企業、生産、地域の成長に焦点を当てています AC電源 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https://demo.s
avatar
Eeshwar Mandal
2023-07-07
AC-DC外部電源(EPS)市場:最新の統計、将来のダイナミクスと地域別の傾向(北米、ヨーロッパ、アジア太平洋、南アメリAC-DC外部電源(EPS) 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。http
avatar
Eeshwar Mandal
2023-07-07
AC電源市場:分析セグメンテーションは、X+企業、生産、地域の成長に焦点を当てています AC電源 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https://issuu.
avatar
Darsh Biswas
2023-06-16
AC-DC外部電源(EPS)市場:最新の統計、将来のダイナミクスと地域別の傾向(北米、ヨーロッパ、アジア太平洋、南アメリAC-DC外部電源(EPS) 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。http
avatar
Darsh Biswas
2023-06-16
AC生活觀察.1做了很多的提問,我可以創造什麼?竟然是什麼都可以。 拖延症末期拖延了一段時間,終於讓選擇不再是選擇,而是實際行動去創造。哇哦還有什麼比這個更好的? 關於AC是什麼有空再來慢慢地寫下每天的記錄,今天來分享昨天接收到的禮物。 近期跟著群組進行植入物音頻除障練習,不抱任何期待投射的,只是想看看會發生什麼。
avatar
Yushan Zhang
2023-02-19
AC數位職涯相談室 #4 開箱數位軟體團隊 - 模擬專案體驗帶你找出適合的職能 流水帳心得2021年7月22日,非常感謝AC又舉辦了每月一次的數位職涯相談室啦! 本次邀請到的就是本BLOG 方格子 的前端及全端工程師:Jiang & Kuan 來分享現實職場當中前後端各別負責的工作內容。
Thumbnail
avatar
邊撸鐵邊學CODE的Doug
2021-07-24
031021Ac 長大公分公斤, 慢慢儲蓄; 長成大人, 不用筆試, 還蠻快樂. 多了責任, 家庭社會, 種種處境; 方向對了, 依序前進; 枝強葉茂. 勤奮盡責, 助己益人; 正牌大人? 誰說了算?
Thumbnail
avatar
Love365
2021-03-10
030321Ac 流轉堅毅地, 挺直著身軀; 佇立於天地, 宇宙中.   順勢地, 汲取著土地養分, 吸呼著空氣芬芳; 及時的, 收納下光與熱. 回報以, 丰姿綽約.  
Thumbnail
avatar
Love365
2021-03-03
030221Ac 光臨歡喜接收, 真誠良善. 光明新境, 先獨樂樂; 順路賞賞, 優良佳作. 靜靜品嚐; 沉澱心靈, 愉悅心情, 清楚心意, 明亮心境; 心愛蒞臨.
Thumbnail
avatar
Love365
2021-03-02