jjgod
2016-02-05 19:57:49 +08:00
后面的回复比较有意思了,作为前浏览器开发者补充一下吧:
- 现代浏览器渲染引擎里 2D 绘图的地位不如以前了,大量新的 CSS / DOM 操作都要求把工作放到 GPU 完成,所以虽然 CoreGraphics/Skia 这样的库依然是渲染引擎的核心依赖,但要理解整个渲染流程只理解绘制 (在 Blink 和 WebKit 里叫 painting) 是远远不够的,还要理解 layout 和 compositing ,三者紧密结合。
- 现代浏览器的复杂程度导致个人要对整个引擎的架构和实现有很清晰的了解都很难了,大部分人会选择专攻一个方向,比如你选择 graphics 方向就会专攻用 GPU 做 compositing ,选择 layout 方向就会研究 CSS 的种种特性 (这倒是跟前段需要了解的部分有重叠),选择 painting 部分则会去学习 CG/Skia 这些库的使用和优化等等。一般都先成为了一个领域的专家再考虑兼顾一下和其他领域接口的细节。
- V8 这种 JavaScript 引擎的内部实现其实跟浏览器以及 DOM 的关系不大,除非你要在 JavaScript 语言方面有作为,否则不怎么需要了解 v8 的实现细节 (事实上大部分 Blink 的开发者和 v8 的开发者尽管在一个公司都很少有交流)。
- 了解内部实现有没有帮助?当然是有的,但见效慢,对于前端而言应该更多关注各个浏览器平台的布道师们的 blog 和讲座,那些才是更立竿见影的,比如 Chrome 的年度开发者会议就是主讲比如怎么用 Chrome DevTools 调试和优化 Web 应用的。如果你真的对内部实现很有兴趣再去关注 Blinkon 、 CSS Houdini 这些会议。