2018 眼看就要過去了,今年的你相較去年技術上有怎樣的收穫呢?
記得年初的時候我給自己制定了一個學習計劃,現在回顧來看完成度還不錯。但仍有些遺憾,一些技術點沒有時間去好好學習。
在學習中我發現,像文章這樣的知識往往是碎片化的,而前端涉及到的面很多,如果不將這些知識有效梳理,則無法形成體系、相互串聯。最後有一種東懂一塊,西瞭解一點的感覺。因此,我結合工作體會抽象出了一些前端基礎技術能力,並將這段時間學習或產出的一些不錯的內容根據這些能力進行整理,形成了一份前端技術清單(github 地址)。
不論你是正在自學前端遇到了瓶頸,還是對某些技術熟練掌握但某些還未涉足,都希望這份清單能對你有所幫助。
由於個人精力有限,一些技術點的歸納可能有失偏頗,或者目前並未納入進來,因此 github 上的清單內容 也會不斷更新。目前只包含純前端基礎內容,NodeJS 、客戶端泛前端、小程式、視覺化等內容先留著坑吧。
清單內容↓↓↓
0. 年度報告
1. 基礎拾遺
溫故而知新,不知則習之,是以牢固根基。
1.1. JavaScript
- You-Dont-Know-JS [英]
- JavaScript 基礎執行機制:
- Event Loop(面試裡總會有一題 Event Loop…):
- Web Workers 及其5個常見使用場景 [英]
- 如何避免 async/await 地獄 [英]
- “回撥地獄”的解決思路彙總
1.2. CSS
- You-Need-to-Know-CSS
- CSS佈局指南
- CSS 中的各類換行處理方式 [英]:處理經典的換行問題
- 瀏覽器將rem轉成px時有精度誤差怎麼辦?
- 精準操控的滾動體驗,淺談新標準 Scroll Snap
- 如何完美實現一個非
button
元素的按鈕 [英] - 巧用 CSS Grid 來建立橫向滾動容器 [英]
- 如何處理內聯元素中的空隙 [英]
- CSS Stacking Context 裡那些鮮為人知的坑
1.3. 瀏覽器
- 瀏覽器的工作原理
- 現代瀏覽器內部是如何執行的:
- 完整的頁面生命週期 API 介紹 [英]
- 四個新的觀察者:Intersection / Mutation / Resize / Performance (Observer)
- 渲染引擎工作方式及優化建議 [英]
- 瀏覽器核心渲染:重建引擎
- 跨域解決方案彙總
2. 工程化與工具
軟體規模的擴大帶來了工程化的需求,前端也不例外。隨著 NodeJS 的出現,前端工程師可以使用熟悉的 JS 快速開發所需的工具。工具鏈生態的繁榮也是前端圈繁榮的一個寫照。
2.1. webpack
- webpack 中的 Chunk 關係圖演算法 [英]
- webpack 進階系列文章
- 編譯優化:
- 關於 webpack 編譯快取的討論:
2.2. Gulp
2.3. Linter
2.4. 靜態型別(Typescript/Flow)
- Typescript 總體架構 [英]
- 為什麼要在 JavaScript 中進行靜態型別檢查:
2.5. Babel
2.6. CSS預處理與模組化
3. 效能優化
效能優化其實就是在理解瀏覽器的基礎上“因地制宜”,因此可以配合1.3節“瀏覽器”部分進行理解。
強烈推薦把 Google Web 上效能優化 Tab 中的文章都通讀一遍,其基本涵蓋了現代瀏覽器中效能優化的所有點,非常系統。下面也摘錄了其中一些個人認為非常不錯的篇幅。
3.1. 載入效能
- PRPL 模式 [英]
- 圖片懶載入完全指南 [英]
- 使用 Intersection Observer 來懶載入圖片 [英]
- 圖片與視訊懶載入的詳細指南 [英]
- 使用 Application Shell 架構來實現秒開應用 [英]
3.2. 執行時效能
- 避免大型、複雜的佈局和佈局抖動 [英]
- 什麼導致強制同步佈局(reflow)? [英]
- 如何診斷強制同步佈局 [英]
- 無線效能優化:Composite
- 如何不擇手段提升scroll事件的效能
- 使用 passive event listener 來提高滾動流暢性 [英]
- 節流和去抖(throttle &
debounce): - requestIdleCallback – 一個強大而神器的 API:
- requestIdleCallback使用入門 [英]
- Idle Until Urgent [英]:requestIdleCallback的妙用
3.3. 前端快取
- Web 快取簡介:以購買牛奶的為例 [英]
- 大話前端快取 [英]
- 快取(一)—— 快取總覽:從效能優化的角度看快取
- 快取(二)—— 瀏覽器快取機制:強快取、協商快取
- 快取(三)—— 資料儲存:cookie、Storage、indexedDB
3.4. 效能除錯與實踐
- 使用 Chrome DevTools 提升頁面速度 [英]:Chrome DevTools實操講解
- 瞭解 DevTools 中的 Resource Timing
- 淘寶新勢力周H5效能優化實戰
- 優化打包策略來提升頁面載入速度
- Chrome DevTools 中你可能不知道的除錯技巧
- 前端效能測量 [英]
3.5. 效能指標
- 以使用者為中心的前端效能指標 [英]:前端效能指標的來龍去脈
- DOMContentLoaded:
- FP (First Paint):
- FCP (First Contentful Paint):
- FMP (First Meaningful Paint):
- TTI (Time to interactive):
- TTFB (Time To First Byte):
- FID (First Input Delay):
- Speed Index:
4. 安全
很多安全風險老生常談,但是往往到出現問題時,才會被重視或者意識到。
4.1. XSS
4.2. CSRF
- 如何防止CSRF攻擊?
- Site Isolation [英]:Chrome的新特性
4.3. CSP
4.4. HTTPS
4.5. 安全實錄
- About
rel=noopener
[英]:開啟一個新頁面是如何帶來安全隱患的 - 一種新型的“釣魚”方式 [英]
- 一個媒體檔案請求引發的跨站風險 [英]
- Mitigating Spectre [英]: Chrome 中的跨站安全問題
5. 自動化測試
自動化測試是軟體工程的重要部分之一,但卻極容易被忽視。
5.1. 單元測試
5.2. 端到端測試 (E2E)
5.3. 其他
6. 框架與類庫
如果說基礎知識是道,那框架與工具可能就是術;學習與理解它們,但千萬不要成為它們的奴隸。
6.1. React
- React 底層揭祕 [英]
- 你所需要知道的 React 細節
- React Fiber 架構
- React 16 Fiber 原始碼速覽
- React 是怎樣煉成的:React早期的進化之路
- 從零開始實現一個React:
- 「react技術棧」單頁應用實踐快速入門
6.2. Vue
6.3. Redux
6.4. RxJS
7. 新技術/方向
前端領域新技術、新方向層出不窮,這裡彙總一些新技術方向;作為開發者需要多瞭解但是不要盲從
7.1. PWA
- PWA 學習與實踐系列
- Service Worker 入門簡介 [英]
- PWA 在 iOS 平臺上的特殊問題 [英]
- 在你的 PWA 中小心使用 iOS 的 meta 標籤 [英]
- 餓了麼的 PWA 升級實踐
- 離線指南
- Android 中的 WebAPKs [英]
- Pinterest 的 PWA 實踐 [英]
- 非同步 HTTP Cookies API [英]:賦能Service Worker
7.2. CSS Houdini
7.3. Web Components
7.4. 微前端(Micro Frontends)
7.5. HTTP/2
7.6. WebAssembly
- WebAssembly 官網
- WebAssembly 現狀與實戰
- WebAssembly 系列:
8. 業務相關
在業務中往往還有一些與“業務無關”的場景需求,不論是什麼業務幾乎都會遇到;因此,在變與不變中,我們更需要去抽象出這些問題。
8.1. 資料打點上報
8.2. 前端監控
8.3. A/B測試
- Twitter的A/B測試實踐:
- Netflix A/B Test 實驗平臺實踐 [英]
- 指導方法
- 案例分享
- 工具
8.4. “服務端推”
- 各類“伺服器推”技術原理與例項
- 長連線/websocket/SSE等主流伺服器推送技術比較
- Comet:基於 HTTP 長連線的“伺服器推”技術
- 深入 WebSockets、HTTP/2 SSE [英]
- WebSocket 應用安全問題分析
8.5. 動效
- 動畫設計的12個原則? [英]
- 貝塞爾曲線掃盲
- 動畫:從 AE 到 Web
- 最全最好用的動效落地方法:
9. 不歸類的好文
開卷有益。
- Recursion? We don’t need no stinking recursion!:如何將一些遞迴改為迴圈(尾遞迴優化)
- Turning your web traffic into a Super Computer:通過 Web Worker 和 WebSocket 來將全世界的電腦連線成超級計算機
- Designing very large (JavaScript) applications:高屋建瓴,適合閱讀與思考
注:其中部分外文文章可能需要“科學上網”