没错,我又给自己挖了一个坑。我看到了一本名为《Web Browser Engineering》的有趣书籍,它教如何用 Python 构建一个浏览器。由于我现在正在学习 SICPJS,并将在课程结束时构建一个编译器,我认为这两门课程可能有些关联。我阅读了这本书的目录,确实,这本书主要聚焦于浏览器的核心功能:渲染、网络、解析 DOM 等。但它似乎回避了深入探讨 JS 引擎部分,而是使用 eval() 来解析 JS 代码。所以我认为将两者结合起来是个好主意。
此外,我决定用 NodeJS 而非 Python 来实现这个浏览器。原因如下:
但为什么原书不用 JavaScript 或其他语言实现呢?作者在博客中实际上给出了原因。基本上,JavaScript 会遇到很多技术问题,比如如何让 eval 不影响其他页面,以及在 JavaScript 中处理多进程消息模型相当棘手。此外,浏览器中的网络受到限制。
但我会尝试用 NodeJS 来实现它,NodeJS 支持 TLS、Canvas 以及其他一些必要的模块。使用这门语言应该不会遇到太多麻烦,因为 NodeJS 有很多现成可用的模块。总之,让我们试一试,尽可能地克服挑战!
Web Browser Engineering
How Browsers Work: Behind the scenes of modern web browsers
Structure and Interpretation of Computer Programs, JS Edtion
browser — Apr 27, 2022
用 ❤ 和 制作于 Earth.