<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>浏览器原理 on 我的个人博客</title><link>https://www.wangyunqing.top/tags/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%8E%9F%E7%90%86/</link><description>Recent content in 浏览器原理 on 我的个人博客</description><generator>Hugo -- 0.156.0</generator><language>zh-cn</language><lastBuildDate>Sun, 22 Mar 2026 21:30:00 +0800</lastBuildDate><atom:link href="https://www.wangyunqing.top/tags/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%8E%9F%E7%90%86/index.xml" rel="self" type="application/rss+xml"/><item><title>前端技术的三重门：从运行时到语言再到浏览器</title><link>https://www.wangyunqing.top/posts/frontend-three-doors/</link><pubDate>Sun, 22 Mar 2026 21:30:00 +0800</pubDate><guid>https://www.wangyunqing.top/posts/frontend-three-doors/</guid><description>&lt;p&gt;想象一下，你走进一家汽车工厂。这里有生产线（运行时）、有设计图纸（编程语言）、还有展示大厅（浏览器）。理解这三个层次，就理解了现代前端开发的核心逻辑。&lt;/p&gt;
&lt;h2 id="第一重门谁在跑你的代码"&gt;第一重门：谁在跑你的代码？&lt;/h2&gt;
&lt;p&gt;JavaScript 诞生时只是浏览器里的一个小脚本，能让网页动起来。但开发者们很快想到：既然 JavaScript 这么好用，为什么不能在服务器上也用？于是 Node.js 在 2009 年诞生了。&lt;/p&gt;
&lt;h3 id="nodejs老牌当家人"&gt;Node.js：老牌当家人&lt;/h3&gt;
&lt;p&gt;Node.js 就像一辆开了十五年的老丰田。它可能不是最快的，但：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;配件哪里都能买到&lt;/strong&gt; —— npm 生态有超过 250 万个包&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修车师傅遍地都是&lt;/strong&gt; —— 遇到问题一搜就有答案&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任何停车场都能停&lt;/strong&gt; —— 所有云平台都支持&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它用 C++ 写成，搭载 Google 的 V8 引擎，通过 libuv 处理异步操作。这套架构服务了十几年，证明了自己足够可靠。&lt;/p&gt;
&lt;h3 id="bun年轻的挑战者"&gt;Bun：年轻的挑战者&lt;/h3&gt;
&lt;p&gt;2022 年，一个叫 Bun 的新家伙出现了。它像一辆电动跑车：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;加速 3-4 倍&lt;/strong&gt; —— HTTP 请求每秒能处理 52,000 次，而 Node.js 只有 14,000 次&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启动快如闪电&lt;/strong&gt; —— 冷启动只需要 8-15 毫秒，Node.js 需要 40-120 毫秒&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安装包快 20-40 倍&lt;/strong&gt; —— 那个慢得让人想去喝杯咖啡的 npm，被 Bun 变成了秒开&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么这么快？Bun 做了三个关键选择：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;换了个引擎&lt;/strong&gt; —— 不用 V8，改用 Safari 的 JavaScriptCore。这个引擎优化的是快速启动，而 V8 优化的是长时间运行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用 Zig 语言重写&lt;/strong&gt; —— 不是 C++，是从零开始为速度设计&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;零拷贝 I/O&lt;/strong&gt; —— 数据传输时不反复复制，直接传递&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="该怎么选"&gt;该怎么选？&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;选择&lt;/th&gt;
&lt;th&gt;原因&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;新项目，追求性能&lt;/td&gt;
&lt;td&gt;Bun&lt;/td&gt;
&lt;td&gt;快是真的快，开发体验也更好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;企业级项目，求稳&lt;/td&gt;
&lt;td&gt;Node.js&lt;/td&gt;
&lt;td&gt;生态成熟，出了问题能快速解决&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;无服务器函数&lt;/td&gt;
&lt;td&gt;Bun&lt;/td&gt;
&lt;td&gt;冷启动快，能省下不少计算费用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;依赖大量原生模块&lt;/td&gt;
&lt;td&gt;Node.js&lt;/td&gt;
&lt;td&gt;兼容性最好，不会踩坑&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="第二重门你用什么语言写代码"&gt;第二重门：你用什么语言写代码？&lt;/h2&gt;
&lt;p&gt;JavaScript 是灵活的，像一块可以随意捏的橡皮泥。TypeScript 是给这块橡皮泥加了模具，让它变成你想要的形状。&lt;/p&gt;</description></item></channel></rss>