Skip to Content
Nextra 4.0 is released 🎉
Plan阶段 1:浏览器 + JS 运行时内功(第 1–2 月)

阶段 1:浏览器 + JS 运行时内功(第 1–2 月)

总体目标:彻底掌握浏览器和 JavaScript 运行时的核心机制,包括执行流程、事件循环、渲染管道和内存管理。这将为您后续的框架学习(如 React、Next.js)打下坚实基础。

总体学习框架

  • 时长:8 周(第 1-8 周),每周聚焦一个主题,结合理论学习和实战。
  • 学习原则
    • 系统性:每天分配时间(建议 2-4 小时):30% 理论阅读、40% 代码实践、30% 总结笔记。
    • 工具与资源:使用 Chrome DevTools 进行调试;在您的 Nextra 项目中创建子页面(如 app/plan/phase1/week1/page.mdx)来记录笔记和代码片段。
    • 进度跟踪:每周结束时,输出一份总结(例如知识图或 Demo),并自测(如解决 LeetCode 相关题目)。
    • 潜在挑战:如果遇到难点(如闭包或 Event Loop),先手写模拟代码,再查阅官方文档。
    • 整合项目:在您的知识库中扩展 app/languages/javaScript/page.mdx 或创建新页面来存储学习成果。

逐周学习计划

第 1 周:JS 执行机制

  • 目标:彻底理解 JS 是“如何被执行的”,掌握代码从解析到运行的内部流程。
  • 学习内容
    • 执行上下文(Execution Context):全局、函数、Eval 上下文。
    • 作用域链(Scope Chain):词法作用域 vs. 动态作用域。
    • 闭包(Closure):函数嵌套和变量访问。
    • 变量提升(Hoisting):var/let/const 的差异。
  • 推荐资源
    • MDN 文档:执行上下文 闭包 
    • 书籍/文章:《你不知道的 JavaScript》(上卷)第 1-2 章。
    • 视频:Bilibili 或 YouTube 搜索“JS 执行上下文详解”(如 Philip Roberts 的 TED 演讲)。
  • 实战步骤
    • 手写作用域链模拟:创建一个函数嵌套示例,模拟变量查找过程(用对象表示作用域)。
    • 画 10 张执行栈流程图:针对不同代码片段(如函数调用、闭包),用工具如 Draw.io 绘制栈变化。
    • 项目整合:在 app/languages/javaScript/page.mdx 添加一节“执行机制”笔记,包含代码示例。

第 2 周:Event Loop

  • 目标:彻底掌握微任务/宏任务,理解 JS 的异步执行模型。
  • 学习内容
    • Promise.then:异步回调的微任务队列。
    • MutationObserver:DOM 变化的微任务触发。
    • requestAnimationFrame:宏任务在渲染前的应用。
  • 推荐资源
  • 实战步骤
    • 手写 Event Loop 模拟器:用 Node.js 或浏览器 console 编写代码,打印 Promise、setTimeout 和 async/await 的执行顺序。
    • 项目整合:创建 app/plan/phase1/week2/page.mdx,记录模拟代码和输出结果。

第 3 周:浏览器渲染全流程

  • 目标:理解从 HTML/CSS 到屏幕显示的完整管道。
  • 学习内容
    • HTML -> DOM:解析树构建。
    • CSS -> CSSOM:样式计算。
    • RenderTree 构建:DOM + CSSOM 合并。
    • Layout/Paint/Composite:布局、绘制和合成。
  • 推荐资源
    • Google Developers:渲染性能 
    • 视频:Chrome Dev Summit 的渲染流程讲解。
  • 实战步骤
    • 用 DevTools 逐帧分析渲染流水线:打开 Performance 面板,录制页面加载,分析每个阶段的时间消耗。
    • 项目整合:在 app/frameworks/nextjs/page.mdx 添加渲染相关笔记(因为 Next.js 涉及 SSR/CSR)。

第 4 周:重绘、回流与图层

  • 目标:优化渲染性能,理解浏览器如何处理变化。
  • 学习内容
    • GPU 合成层:硬件加速。
    • transform/opacity:不触发回流的属性。
    • will-change:预优化提示。
  • 推荐资源
  • 实战步骤
    • 做 3 份性能对比 Demo:创建简单动画(一个用 transform,一个用 left/top),用 DevTools 比较帧率。
    • 项目整合:扩展 app/components/CodeBlock.jsx 添加渲染 Demo 代码。

第 5 周:V8 与垃圾回收

  • 目标:掌握 JS 引擎的内存管理,避免泄漏。
  • 学习内容
    • 新生代/老生代:Scavenger 和 Mark-Sweep。
    • 标记清除:垃圾回收算法。
    • 内存泄漏定位:常见场景如未清理事件监听。
  • 推荐资源
    • V8 官方博客:内存管理 
    • 工具:Chrome Memory 面板教程。
  • 实战步骤
    • Chrome Memory 面板实战:创建循环引用代码,录制 Heap Snapshot,定位泄漏。
    • 项目整合:在 app/languages/javaScript/page.mdx 添加“内存管理”一节。

第 6–8 周:综合实战

  • 目标:整合前几周知识,通过手写代码深化理解。
  • 学习内容
    • 手写 Promise、防抖/节流、深拷贝。
    • 复习所有主题,连接点(如 Event Loop 如何影响渲染)。
  • 推荐资源
    • GitHub 仓库:搜索“手写 Promise”或“JS 手写系列”。
    • LeetCode:题目如“实现 Promise.all”。
  • 实战步骤
    • 实现上述函数:从零编写,测试边缘案例。
    • 输出成果:绘制“JS 运行机制全景知识图”(用 MindMeister 或 XMind),覆盖所有周内容。
    • 项目整合:创建 app/plan/phase1/summary/page.mdx,嵌入知识图和代码。

额外建议

  • 资源扩展:如果您的项目有 app/tools/page.mdx,可以添加学习工具如 DevTools 的使用指南。
  • 潜在问题解决:如果卡在某个点(如理解闭包),可以生成模拟代码。
  • 进度监控:每周结束时,自问:“我能解释这个机制给别人听吗?”如果需要调整计划,请提供反馈。
  • 下一步:开始第 1 周?或需要创建相关 MDX 文件?
最近更新:12/9/2025, 2:17:57 AM