
程式碼之外,還有生活的藝術 前端工程師 / 攝影 / 生活紀錄
- 文章206
- 標籤100
標籤查看更多
分類查看更多
- Advanced Web Dev Quiz (27)
- CORS Config 解析:Preflight、Credentials 與 Response Headers
- 圖片格式完整比較:JPEG、PNG、WebP、AVIF 的壓縮、透明與色域差異
- CSS Render Layer
- 從 HSTS 看網站安全:理解 Strict-Transport-Security Header
- CSS 選擇器:如何只選中第一個 <li> 元素
- 理解 Set-Cookie 與 Cookie 的運作機制
- CSS font-display 五種策略(auto/block/swap/fallback/optional)
- XSS/CSRF/Clickjacking/MITM 名詞整理
- HTML rel 屬性:noopener 與 noreferrer 的差異及安全性應用
- 理解 JavaScript Promise 方法:all、race、any、allSettled
- 理解 JavaScript Generator 函式與 yield 運作原理
- HTML rel 屬性:noopener 與 noreferrer 的差異及安全性應用
- 理解 Web Vitals | 提升網站效能與使用者體驗的關鍵指標
- JavaScript WeakMap 與 Map 的差異及實際應用
- CSS 選擇器權重 | Specificity
- JavaScript 事件傳遞機制:Capturing 與 Bubbling 的執行順序
- CSS 動畫的渲染成本(Layout、Paint、Composite)
- JavaScript 垃圾回收機制:理解 Mark and Sweep 演算法與記憶體管理
- HTTP Cache:快取指令與應用
- 從輸入網址到頁面載入:PerformanceNavigationTiming
- JavaScript 展開運算子的淺拷貝陷阱:物件參考問題解析
- 前端資源預加載:dns-prefetch、preconnect、prefetch、preload
- 瀏覽器的呼叫堆疊與事件循環 | Call Stack & Event Loop
- DNS 解析流程 | Resolving Domain Requests
- 渲染流程與合成 | Rendering Pipeline & Compositing
- async vs. defer
- bfcache 是什麼?為什麼 unload 會讓頁面失去 bfcache 資格
- Deep JavaScript Foundations v3 (69)
- 委派導向設計:從父子繼承到平行協作
- OLOO:物件連結物件的設計模式
- 原型繼承:`Object.create()` 與跨鏈方法查找
- 原型遮蔽(Shadowing)與顯式偽多型
- 原型鏈:物件之間的連結機制
- 原型系統:連結而非複製
- 自動綁定方法的代價:一個不應該存在的 hack
- ES6 `class` 語法:繼承、`super` 與 `this` 綁定的陷阱
- 箭頭函式的詞彙 `this`:物件不是 Scope,以及何時該用箭頭函式
- 箭頭函式與詞彙 `this`:沒有自己的 `this` 的函式
- 預設綁定:`this` 的第四種做法與總覽
- `new` 關鍵字:第三種 `this` 綁定規則
- 隱式綁定與明確綁定:`this` 的前兩種規則
- `this` 關鍵字:由呼叫方式決定的動態上下文
- ES6 模組語法:原生模組支援與 Node.js 的相容之路
- 模組模式(Module Pattern):用閉包實現封裝
- 閉包關閉的是變數,不是值:迴圈閉包的常見陷阱
- 閉包(Closure):函式記憶自身範疇的能力
- `let` 不提升?這個說法是錯的
- 提升(Hoisting):一個有用但不精確的比喻
- `const`:被高估的宣告關鍵字
- 明確的 `let` 區塊:縮短變數的生命週期
- `var` 與 `let` 的語意分工:各自有其適當的位置
- 區塊範疇:`let`、`const` 與 `var` 的適當使用場景
- IIFE:立即調用函式表達式
- 函式範疇的實際用途:最小暴露原則
- 詞彙範疇的視覺化:氣泡模型與編譯期優化
- 詞彙範疇:正式定義與動態範疇的對比
- 箭頭函式:不是萬能替代品
- 為什麼要命名函式表達式:三個不可迴避的理由
- 函式宣告 vs 函式表達式:識別字屬於哪個範疇
- 巢狀範疇 (Nested Scope):向外查找的完整鏈
- 詞彙範疇的邊界案例:遮蔽缺失與自動全域變數
- 執行階段:變數查找與目標/來源位置
- 編譯階段與範疇管理:彈珠桶子對話模型
- 範疇(Scope):JavaScript 的兩階段處理模型
- TypeScript 的運算元型別驗證:被低估的功能
- 自訂型別與函式參數的型別標註
- TypeScript 與 Flow 的型別推斷與型別標註
- TypeScript 與 Flow:靜態型別工具的優點與侷限
- 相等性練習解析:`findAll` 的實作邏輯
- 相等性練習:實作受控制的強制相等搜尋函式
- 為 `==` 辯護:一個更強的論點
- `==` 的使用準則:何時用、何時不用
- `==` 與 Boolean 的角落案例:永遠不要用 `== true` 或 `== false`
- `==` 演算法逐步走讀:數字與陣列的比較案例
- `==` 演算法逐步解析:偏好數字、遞迴收斂
- 強制相等性:`==` 的實際運作與 `null`/`undefined` 的特殊關係
- `==` 與 `===`:兩者的真正差異
- 強制轉型練習解析:`isValidName` 與 `hoursAttended`
- 強制轉型練習:實作輸入驗證函式
- 隱式轉型即抽象:選擇顯式還是隱式的判斷框架
- 強制轉型的哲學:擁抱它,而非迴避它
- 強制轉型的角落案例:所有問題的根源
- Boxing:原始值存取屬性背後的隱式轉型
- 強制轉型的實際案例:你已經在用它了
- `ToBoolean` 抽象操作:falsy 清單與 truthy 的判斷邏輯
- `ToNumber` 抽象操作:數值轉換的規則與陷阱
- `toString` 抽象操作:值的字串化規則與角落案例
- 抽象操作與 ToPrimitive:型別轉換的底層機制
- 基本物件:JavaScript 的內建建構函式
- `Object.is()` Polyfill 解題解析
- 型別檢測練習:實作 `Object.is()` Polyfill
- 負零:JavaScript 中被刻意隱藏的特殊值
- NaN:無效數字與正確的檢測方式
- 三種「空」:undefined、undeclared 與 uninitialized
- BigInt:JavaScript 的大整數原始型別
- `typeof` 運算子:辨識值的型別
- JavaScript 型別系統:原始型別的正確定義
- JavaScript Hard Parts v3 (50)
- Private Static Fields:類別層級的私有共享資料
- Private Instance Fields:真正的封裝
- Public Instance Fields 的執行流程
- `class` 的進階特性:`static` 方法與 Public Instance Fields
- 解法三的問題與 `class` 語法糖:解法四
- `new` 關鍵字的完整執行流程
- 解法三:`new` 關鍵字與函式的雙重身份
- 方法內的巢狀函式與箭頭函式的 `this` 綁定
- `Object.prototype`:原型鏈的頂端
- 原型鏈的運作機制與 `this`
- 解法二:用原型鏈共享方法,避免記憶體浪費
- 工廠函式:解決手動建立物件的第一種方法
- Object Literal、Dot Notation、Object.create:三種建立物件的方式
- 物件導向 JavaScript:OOP 的核心目標與原型鏈基礎
- Promise 錯誤處理、AbortSignal 與非同步 JavaScript 總結
- Microtask Queue:Promise 回呼的優先執行機制
- 當 Callback Queue 遇上 Promise:執行順序追蹤
- Promise 的運作機制:物件持久性、記憶體參照
- ES6 Promises 與 fetch
- ES5 Callback 模式的侷限,與 ES6 Promises 的登場
- Event Loop:JavaScript 非同步執行的調度核心
- Callback Queue 與執行規則:非同步回呼如何回到 JavaScript
- Callback Function 與 Web Browser APIs 的運作原理
- Promises、Async 與 Event Loop:為什麼 JavaScript 需要非同步機制
- hint 參數、Symbol 本質與元程式設計
- Symbol 與手動控制 ToPrimitive 強制轉換
- ToPrimitive 強制轉換與 `@@toPrimitive` 隱藏屬性
- Date 物件的隱藏屬性 `[[DateValue]]` 與方括號記法動態存取
- JavaScript 記憶體模型:原始型別、Stack 與 Heap、物件參考比較
- JavaScript 型別強制轉換三條路徑:ToNumber、ToString、ToBoolean
- ToBoolean 強制轉換、寬鬆相等與嚴格相等
- 加法運算子的例外:型別強制轉換規則與手動控制
- JavaScript 型別強制轉換:運算子、ToNumber 與 DOM 字串
- Closure 的實際應用:once、memoize、Iterator 與 Module Pattern
- Closure:為什麼每次呼叫外層函式都是全新開始
- Closure 獨立性與變數查找順序:同一函式的多個閉包互不干擾
- JavaScript Closure 的真實樣貌:Scope、COVE 與詞彙作用域
- JavaScript Closure 背包機制:私有狀態如何被保留
- JavaScript Closure 與背包(Backpack)的運作機制
- JavaScript Closure 的核心問題:變數存取由定義位置還是呼叫位置決定?
- JavaScript 函式回傳函式:執行環境 (Execution Context) 與 Call Stack 運作解析
- JavaScript Closure(閉包):原理與核心應用
- JavaScript 陣列變異方法與 ES2023 非變異替代方案(Pure Function、Side Effect)
- 箭頭函式(Arrow Function)、匿名函式與 map 方法
- JavaScript 一級函式與高階函式(Higher-Order Function)入門
- 以 copyArrayAndManipulate 拆解高階函式 (Higher-Order Function) 的執行原理
- JavaScript 執行上下文與高階函式:從重複程式碼到通用化設計
- JavaScript 的 Higher-Order Functions:從 DRY 到函式作為參數
- Call Stack 是什麼?理解 JavaScript 的呼叫堆疊機制
- JavaScript 執行原理:執行緒、記憶體與執行環境(Execution Context)
- JS地下城 (5)
- Web Performance Fundamentals (16)
- 以程式碼收集效能指標:PerformanceObserver 與 web-vitals 套件
- 以程式碼收集效能指標:Performance API 概覽
- 其他效能指標:FCP(首次內容繪製)
- 其他效能指標:TTFB(首位元組時間)
- 已退役的指標:First Input Delay(FID)
- Core Web Vitals:INP(互動到下一幀繪製)
- 如何閱讀火焰圖(Flame Chart)
- CLS 的邊界情況:哪些元素計入、viewport 範圍與 iframe 的處理
- Core Web Vitals:CLS(累積版面位移)
- Core Web Vitals 與 LCP(最大內容繪製)
- 傳統指標的局限與 Core Web Vitals 的誕生
- 傳統效能指標:DOMContentLoaded 與 Load 事件
- 如何閱讀瀑布圖(Waterfall Chart)
- 網頁效能為什麼重要:SEO 與線上廣告篇
- 網頁效能與使用者體驗:關鍵數字與研究根據
- 網頁效能是什麼?課程架構與範例應用總覽
- You Might Not Need a Framework (32)
- Vanilla JS 在現代開發中的位置
- 用 Proxy 實現雙向資料綁定,以及完成應用程式的最後修正
- 完成購物車頁面:CartItem 與 OrderPage 元件,以及元件註冊的關鍵機制
- 購物車邏輯與響應式徽章更新:Proxy、陣列不可變性與全域事件
- DetailsPage 元件:複用既有模式與調試 dataset 命名
- ProductItem 元件與事件目標判斷:event.target 與 event.currentTarget
- 響應式渲染:監聽 Store 變動並動態產生選單 DOM
- Proxy 與響應式程式設計:讓資料變動驅動 UI 更新
- 為 Web Component 載入外部 CSS:Fetch API 與效能優化
- 為 Custom Element 啟用 Shadow DOM:樣式封裝的實際效果
- 在 Custom Element 中載入 Template:connectedCallback 與 Shadow DOM 的必要性
- 建立第一個 Web Component:頁面元件的實作起點
- Web Components 的 CSS 策略與常見問題釐清
- Shadow DOM:Web Components 的樣式封裝機制
- HTML Templates:在 DOM 中定義惰性的 HTML 片段
- Web Components 與 Custom Elements:瀏覽器原生的元件化方式
- 完成 Router:動態路由參數、popstate 監聽與瀏覽器歷史導覽
- 實作 Router 的頁面渲染邏輯:切換路由與清除容器
- 實作客戶端 Router:攔截連結、歷史紀錄與深度連結
- SPA 路由原理:History API 與頁面切換的兩種策略
- 建立 Services 層:API、Store 與 ES 模組系統
- addEventListener 選項、移除事件與自訂事件
- DOM 事件綁定:事件種類、命名規則與兩種綁定方式比較
- DOMContentLoaded:初始化應用程式的正確時機
- JavaScript 入口點與 script 載入策略
- 在實際專案中操作 DOM:查詢範圍與效能意識
- DOM 與 HTML 原始碼的差異:瀏覽器如何解析與補全結構
- 操作 DOM 元素:屬性、樣式、事件與內容
- 選取 DOM 元素:方法、回傳型別與操作能力
- DOM 與 DOM API 基礎概念
- Vanilla JS 的優勢與開發者的常見疑慮
- 什麼是 Vanilla JavaScript?
- 學習經歷 (2)
- 生活亂談 (2)
- 程式筆記 (3)
Life
生活日常、電影、旅遊隨筆
2 篇 MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog
