什麼是桶文件(Barrel File)模式?
會想調查這個主題是因為目前所在的團隊大量地使用到這樣的模式,但 Vite 並不會在開發中進行 Tree Shake 就導致每一次開發環境都有大量的無用代碼被打包進去,嚴重影響到開發體驗。因此研究一下這種方法的理念與優缺點以架構更好的專案。
會想調查這個主題是因為目前所在的團隊大量地使用到這樣的模式,但 Vite 並不會在開發中進行 Tree Shake 就導致每一次開發環境都有大量的無用代碼被打包進去,嚴重影響到開發體驗。因此研究一下這種方法的理念與優缺點以架構更好的專案。
前面寫了一篇文章關於 ES6 JavaScript 當中的內建資料結構: Map,這次來談談 WeakMap,它又與 Map 有什麼不同呢?會發現 WeakMap 相較 `Map` 少了非常多可用的方法,這是因為它們的根本處理資料的方式不同,Map 是強引用,而 WeakMap 是弱引用。
從很早以前就大致知道瀏覽器開始推出 Web Components 相關 API 與標準,但一直沒有機會在實戰中使用這項技術。想撰寫這篇文章記錄是因為隨著時間推移發現 Web Components 的應用範疇越來越廣,因此趁著有空也來了解一下相關知識,並且分析它與現有的解決方案有什麼不同。
近期我對自己看待撰寫程式這件事有更高的期許,除了最基本的效能、閱讀性、擴充性……之外還有一個非常重要的領域就是:測試。不過程式好端端的能動就代表測試沒有必要了嗎?在我剛工作時實際上做了一段時間的自動化 QA 工程一段時間,不過那時候的我其實也並不明白寫測試的原因,就是有程式就拿來自動化測試,並沒有想太多。
JavaScript ES6 中有一個用法與物件近似的資料結構我一直不是很清楚用途。 —— Map,這篇文章會主要拿熟知常見的物件與 Map 來做比較以分辨出 Map 的特性與使用時機。總結來說可以把 Map 當作是用來頻繁讀寫的物件,它具備更好的性能、更明確的語法。
發現身為初階打工人其實通常只是看見問題並拼命解決它,但換個角度思考:「如果現在手上專案燒起來,主管定個超乎預期的時程但你也沒有自己一套說法,要如何交代?」,最貼近實作的人其實是最能開出真實預估的人。參考:The work is never just “the work” - Dave Stewart 文章。
近期執行的專案在進行翻新包含了整體的視覺設計,因此前端也面臨要如何同步管理產品視覺的問題。先說痛點,先前專案並沒有具體的規範應該如何定義 UI 當中的數值,導致魔法數字(沒有規範與描述的值)流竄於整個產品當中,造成了非常大的的困擾。我會解釋得盡量具體明白如果要重新設計一款數位產品會怎麼管理其中的數值。
為了確保頁面內容保持在合理的範圍內,很多時候會需要在外層使用固定的尺寸作為網頁內容的容器。而近期在翻新的頁面有一些獨特的布局樣式,透過 CSS Grid 來更靈活的讓容器內容也能跳脫安排在各處,主要參考 Kevin Powell 的做法。
先前提到「添加深色模式要考慮的代價」無可避免的會增加比預想中還要多的成本,但如果能在一開始用正確的方式製作網頁風格,那麼可以有效的避免掉許多問題。如果你希望製作不同風格的數位產品都可以參考本篇文章,用更省力的方式定義風格。
經營這個部落格時我逐漸養成了「不管再忙也要推新進度上來」的習慣,不管是寫文章、小短文、找題材、修復 BUG 推新功能……總之每天都要盡量以讓部落格更好這個方向努力進而強制自己去精煉思考。這種生產力非線性與專注在目標大方向的概念幫助我建立了不少習慣。
開發至今從來都沒有特別去了解如何好好的執行代碼審核,大家都默認會寫代碼就代表你也有能力去審核別人代碼,但我想這是一門額外的學問,因而促使我寫下這篇文章去了解如何進行代碼審核。審核代碼是最直接可以發掘並改善問題的環節,主持得當的代碼審核能夠補足團隊成員間的知識盲區進而提升整體代碼水平。
身處開發領域會發現很多時候都是在做架構資訊的工作,所以我會覺得稱呼自己的日常工作像是「🌵 軟體園丁」是十分貼切的,如果你也同意寫作是為了思考更多,並期望透過輸出寫作來精煉自己的思考,那麼「數位花園」這個概念你應該也會有興趣。
瀏覽器引擎前綴是為了讓開發者在瀏覽器尚未正式支援的情況下先使用這些前綴來實現一些新的 CSS 特性,甚至當時還時常會使用 PostCSS 這類預處理器的 autoprefixer 插件來預處理 CSS 添加上這些前綴。近期發現需要前綴的屬性越來越少,未來也大機率不會再有新的前綴被加入了。
Git 允許我們紀錄任何檔案的變更,並且可以輕鬆地回溯到任何一個版本,但是當需要儲存大型檔案時 Git 就會顯得力不從心,因為 Git 並不是為了儲存大型檔案(圖片、影片、音樂……等二進制檔案)而設計的。而這次介紹的 Git Large File Storage 是 Git 的擴充,專門用於解決以上問題。
如今 Git 與 GitHub 已經成為業界主流,有很大機率你的專案也會使用到它們來進行版本控制,但由於 GitHub 是一款基於 Git 附加的服務,所以我們時常會輕視它的功能,其實 GitHub 有許多不錯的功能卻不是那麼明顯,因此主要分享一些我認為有用但日常使用沒有查覺到的功能。