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 架構,
而是如何拆解問題。

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


avatar-img
5會員
14內容數
本來是理科生,在被物理放棄之後成為了文科生,有時理性思考,偶爾卻會脫口出感性的字句;喜歡打字的聲音,以生活為靈感寫下過去、現在與未來。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
碎碎念 的其他內容
理解問題,然後拆解,最後解決它。 通常網頁開發的課程流是 HTML - CSS - JavaScript , 但在 AC 一開始就先淺談 JavaScript , 就是要先建立運算思維:
孔子說三十而立,我卻三十而迷失了自己, 這個世界給得價值觀太過沈重, 原本不在意的,在褪去青春之後,都成為了後悔的來源; 後悔沒有選OO系、沒有攻讀研究所、沒有超前部署自己的人生, 最後遺失了勇氣,想要往前邁進得步伐依舊跨不出舒適圈, 於是季節繼續更迭、身邊的夥伴來來去去, 好像只有我被自己困住了。
理解問題,然後拆解,最後解決它。 通常網頁開發的課程流是 HTML - CSS - JavaScript , 但在 AC 一開始就先淺談 JavaScript , 就是要先建立運算思維:
孔子說三十而立,我卻三十而迷失了自己, 這個世界給得價值觀太過沈重, 原本不在意的,在褪去青春之後,都成為了後悔的來源; 後悔沒有選OO系、沒有攻讀研究所、沒有超前部署自己的人生, 最後遺失了勇氣,想要往前邁進得步伐依舊跨不出舒適圈, 於是季節繼續更迭、身邊的夥伴來來去去, 好像只有我被自己困住了。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
拿坡里在本賽季展現出強勁的回暖態勢重新回到了聯賽榜首。 他們在休賽季的補強,尤其是比利時前鋒盧卡庫和中場麥克托米奈的加入,為進攻端帶來了更多選擇與穩定。 孔蒂作為新任教頭,將球隊防守提升至聯賽最佳,場均失球僅0.6,顯示出他對防守的重視與調整。 相對而言,AC米蘭本賽季的表現起伏不定, 尤其
Thumbnail
Gold 9 studio 的執行長黃翊媁女士,談起Gold 9 studio 時笑說公司只是人生的副業,但能把副業經營得有聲有色,甚至帶有對職人精神堅持的使命,這就已經不是副業的態度。她自嘲自己活得很土象星座,對每個事情都抱持著流程化和負責任的態度。
Thumbnail
AC-DC電源供應器是確保電子設備效能和安全性的重要一環,本文將介紹AC-DC電源供應器的基本原理、設計流程及其在各種應用中的案例,幫助讀者更了解AC-DC電源供應器的概念和應用。
Thumbnail
嗨,你好!我是Mac含滷蛋。 你問我怎麼誕生的嗎? 在一次使用文字朗讀功能時,朗讀的聲音太含糊就像講話含滷蛋聽不清楚,正好被化學物質潑濺到產生化學變化變成生命體。喀喀...(Mac含滷蛋的蛋殼碰撞聲) 應該是Macbook使用者覺得Mac太貴,原本朗讀的聲音不好聽...集結眾多的怨念所誕生的...
AC電源 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https://demo.s
AC-DC外部電源(EPS) 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。http
AC電源 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https://issuu.
AC-DC外部電源(EPS) 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。http
做了很多的提問,我可以創造什麼?竟然是什麼都可以。 拖延症末期拖延了一段時間,終於讓選擇不再是選擇,而是實際行動去創造。哇哦還有什麼比這個更好的? 關於AC是什麼有空再來慢慢地寫下每天的記錄,今天來分享昨天接收到的禮物。 近期跟著群組進行植入物音頻除障練習,不抱任何期待投射的,只是想看看會發生什麼。
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
拿坡里在本賽季展現出強勁的回暖態勢重新回到了聯賽榜首。 他們在休賽季的補強,尤其是比利時前鋒盧卡庫和中場麥克托米奈的加入,為進攻端帶來了更多選擇與穩定。 孔蒂作為新任教頭,將球隊防守提升至聯賽最佳,場均失球僅0.6,顯示出他對防守的重視與調整。 相對而言,AC米蘭本賽季的表現起伏不定, 尤其
Thumbnail
Gold 9 studio 的執行長黃翊媁女士,談起Gold 9 studio 時笑說公司只是人生的副業,但能把副業經營得有聲有色,甚至帶有對職人精神堅持的使命,這就已經不是副業的態度。她自嘲自己活得很土象星座,對每個事情都抱持著流程化和負責任的態度。
Thumbnail
AC-DC電源供應器是確保電子設備效能和安全性的重要一環,本文將介紹AC-DC電源供應器的基本原理、設計流程及其在各種應用中的案例,幫助讀者更了解AC-DC電源供應器的概念和應用。
Thumbnail
嗨,你好!我是Mac含滷蛋。 你問我怎麼誕生的嗎? 在一次使用文字朗讀功能時,朗讀的聲音太含糊就像講話含滷蛋聽不清楚,正好被化學物質潑濺到產生化學變化變成生命體。喀喀...(Mac含滷蛋的蛋殼碰撞聲) 應該是Macbook使用者覺得Mac太貴,原本朗讀的聲音不好聽...集結眾多的怨念所誕生的...
AC電源 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https://demo.s
AC-DC外部電源(EPS) 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。http
AC電源 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。https://issuu.
AC-DC外部電源(EPS) 市場の現状と将来展望に関する包括的な洞察を提供する、車速センサー市場2023年調査報告書がリリースされました。当レポートでは、業界の市場動向、成長促進要因、課題、機会などの詳細な分析に加え、競争環境と市場主要企業の市場シェア分析についても徹底検証しています。http
做了很多的提問,我可以創造什麼?竟然是什麼都可以。 拖延症末期拖延了一段時間,終於讓選擇不再是選擇,而是實際行動去創造。哇哦還有什麼比這個更好的? 關於AC是什麼有空再來慢慢地寫下每天的記錄,今天來分享昨天接收到的禮物。 近期跟著群組進行植入物音頻除障練習,不抱任何期待投射的,只是想看看會發生什麼。