最后更新:2019/10/09 新增内容 (diff) >>
学习文章的知识往往是碎片化的。而前端涉及到的面很广,这些知识如果不进行有效梳理,则无法相互串联、形成体系。因此,我结合工作体会将抽象出了一些前端基础能力,并将看过、写过的一些不错的文章进行整理,形成了一份(纯)前端技术清单。
不论你是正在自学前端,还是对前端某些技术熟练掌握但某些还未涉足,我都希望这份清单能帮助你 review 一些前端的基础能力。
温故而知新,不知则习之,是以牢固根基。
- You-Dont-Know-JS [英]
 - JavaScript 基础运行机制:
 - Event Loop(面试里总会有一题 Event Loop…):
 - Web Workers 及其5个常见使用场景 [英]
 - 如何避免 async/await 地狱 [英]
 - “回调地狱”的解决思路汇总
 
- You-Need-to-Know-CSS
 - CSSOM 及其相关浏览器 API 使用指南 [英]
 - CSS布局指南
 - CSS 中的各类换行处理方式 [英]:处理经典的换行问题
 - 浏览器将rem转成px时有精度误差怎么办?
 - 精准操控的滚动体验,浅谈新标准 Scroll Snap
 - 如何完美实现一个非
button元素的按钮 [英] - 巧用 CSS Grid 来创建横向滚动容器 [英]
 - 如何处理内联元素中的空隙 [英]
 - CSS Stacking Context 里那些鲜为人知的坑
 - 在 (S)CSS 中实现主题功能的 4½ 种方法
 
- 浏览器的工作原理
 - 现代浏览器内部是如何运行的:
 - 完整的页面生命周期 API 介绍 [英]
 - 四个新的观察者:Intersection / Mutation / Resize / Performance (Observer)
 - 渲染引擎工作方式及优化建议 [英]
 - 浏览器内核渲染:重建引擎
 - 跨域解决方案汇总
 
软件规模的扩大带来了工程化的需求,前端也不例外。随着 NodeJS 的出现,前端工程师可以使用熟悉的 JS 快速开发所需的工具。工具链生态的繁荣也是前端圈繁荣的一个写照。
- webpack 中的 Chunk 关系图算法 [英]
 - webpack 进阶系列文章
 - 编译优化:
 - 关于 webpack 编译缓存的讨论:
 
- Typescript 总体架构 [英]
 - 为什么要在 JavaScript 中进行静态类型检查:
 
性能优化其实就是在理解浏览器的基础上“因地制宜”,因此可以配合1.3节“浏览器”部分进行理解。
强烈推荐把 Google Web 上性能优化 Tab 中的文章都通读一遍,其基本涵盖了现代浏览器中性能优化的所有点。笔者也梳理了一份「前端性能优化指南 🚀」,可以帮助大家系统地了解和学习前端性能优化。
下面也摘录了其中一些个人认为非常不错的文章。
- PRPL 模式 [英]
 - 图片懒加载完全指南 [英]
 - 使用 Intersection Observer 来懒加载图片 [英]
 - 图片与视频懒加载的详细指南 [英]
 - 使用 Application Shell 架构来实现秒开应用 [英]
 
- 避免大型、复杂的布局和布局抖动 [英]
 - 什么导致强制同步布局(reflow)? [英]
 - 如何诊断强制同步布局 [英]
 - 无线性能优化:Composite
 - 如何不择手段提升scroll事件的性能
 - 使用 passive event listener 来提高滚动流畅性 [英]
 - 节流和去抖(throttle & debounce)
 - requestIdleCallback
- requestIdleCallback使用入门 [英]
 - Idle Until Urgent [英]:requestIdleCallback的妙用
 
 
- Web 缓存简介:以购买牛奶的为例 [英]
 - 大话前端缓存 [英]
 - 缓存(一)—— 缓存总览:从性能优化的角度看缓存
 - 缓存(二)—— 浏览器缓存机制:强缓存、协商缓存
 - 缓存(三)—— 数据存储:cookie、Storage、indexedDB
 
- 使用 Chrome DevTools 提升页面速度 [英]:Chrome DevTools实操讲解
 - 了解 DevTools 中的 Resource Timing
 - 淘宝新势力周H5性能优化实战
 - 优化打包策略来提升页面加载速度
 - Chrome DevTools 中你可能不知道的调试技巧
 - 前端性能测量 [英]
 
- 以用户为中心的前端性能指标 [英]:前端性能指标的来龙去脉
 - 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:
 
很多安全风险老生常谈,但是往往到出现问题时,才会被重视或者意识到。
- 如何防止CSRF攻击?
 - Site Isolation [英]:Chrome的新特性
 
- About 
rel=noopener[英]:打开一个新页面是如何带来安全隐患的 - 一种新型的“钓鱼”方式 [英]
 - 一个媒体文件请求引发的跨站风险 [英]
 - Mitigating Spectre [英]: Chrome 中的跨站安全问题
 
自动化测试是软件工程的重要部分之一,但却极容易被忽视。
如果说基础知识是道,那框架与工具可能就是术;学习与理解它们,但千万不要成为它们的奴隶。
- 手把手教你如何实现一个简易的 React [英]
 - React 底层揭秘 [英]
 - 你所需要知道的 React 细节
 - React Fiber 架构
 - React 16 Fiber 源码速览
 - React 是怎样炼成的:React早期的进化之路
 - 从零开始实现一个React:
 - 「react技术栈」单页应用实践快速入门
 - React 生命周期图示
 
- 重新设计 Redux [英]:Rematch
 - 如何用 GraphQL 来替代 Redux [英]
 - 解读 Redux 的设计思路与用法
 - (Redux)应用构建的三个原则 [英]
 - React-Redux 的发展历史与实现 [英]
 
前端领域新技术、新方向层出不穷,这里汇总一些新技术方向;作为开发者需要多了解但是不要盲从
- PWA 学习与实践系列
 - Service Worker 入门简介 [英]
 - PWA 在 iOS 平台上的特殊问题 [英]
 - 在你的 PWA 中小心使用 iOS 的 meta 标签 [英]
 - 饿了么的 PWA 升级实践
 - 离线指南
 - Android 中的 WebAPKs [英]
 - Pinterest 的 PWA 实践 [英]
 - 异步 HTTP Cookies API [英]:赋能Service Worker
 
- WebAssembly 官网
 - WebAssembly 现状与实战
 - WebAssembly 系列:
 
- Serverless 给前端带来了什么
 - 基于 Serverless 的淘宝前端研发模式升级
 - Serverless,将给前端发展带来大变革的技术?
 - Why Netflix Rolled Its Own Node.js Functions-as-a-Service for its API Platform
 
在业务中往往还有一些与“业务无关”的场景需求 —— 不论是什么业务几乎都会遇到;因此,在变与不变中,我们更需要去抽象出这些问题。
- Twitter的A/B测试实践:
 - Netflix A/B Test 实验平台实践 [英]
 - 指导方法
 - 案例分享
 - 工具
 
- 各类“服务器推”技术原理与实例
 - 长连接/websocket/SSE等主流服务器推送技术比较
 - Comet:基于 HTTP 长连接的“服务器推”技术
 - 深入 WebSockets、HTTP/2 SSE [英]
 - WebSocket 应用安全问题分析
 
- 动画设计的12个原则🎥 [英]
 - 贝塞尔曲线扫盲
 - 动画:从 AE 到 Web
 - 最全最好用的动效落地方法:
 
开卷有益。
- Recursion? We don't need no stinking recursion!:如何将一些递归改为循环
 - Turning your web traffic into a Super Computer:通过 Web Worker 和 WebSocket 来将全世界的电脑连接成超级计算机
 - Designing very large (JavaScript) applications:高屋建瓴
 - Building a professional design tool on the web:如何使用 Web 技术来创建一个设计/渲染系统
 - Crafting Interpreters:详细介绍了如何实现一个解释器