2026年3月,Midjourney前端工程师Cheng Lou开源了一个叫Pretext的项目。48小时,GitHub星标破万;一周,全网1600万人围观。它只做一件事:不碰DOM,纯TypeScript计算文本排版。Chrome上比传统方案快483倍,Safari上快1242倍。困扰Web三十年的"文本测量必须触发Reflow"的死结,被一个15KB的库亲手解开了。
但这篇文章不打算只讲Pretext。Pretext的爆火是一个信号,它指向一个更大的问题:当浏览器平台本身开始以前所未有的密度补齐能力,当AI Agent开始成为网页的"第二类用户",前端开发者的价值锚点,正在被从两个方向同时拉动。
一、视觉与布局的底层,正在被重新"算"一遍
Pretext的意义不在于"快",在于它暴露了一个事实:浏览器平台在过去三十年里,把太多"本可以算出来的东西"锁在了黑盒里。
文本塞进一个300px的框里有多高?浏览器知道答案,但它不让你直接问。你必须把文本塞进DOM,让浏览器排一遍版,再用getBoundingClientRect()把结果"讨"回来。这个过程叫Reflow,是网页卡顿的头号元凶。
Pretext绕开了这个黑盒。它用Canvas的measureText()测量字符宽度并缓存,之后所有排版计算都是加减乘除。同一套字体引擎,走了一条不触发布局的"后门" 。
2026年的CSS,在做同一件事的另一半。Anchor Positioning让浮层定位从"JavaScript手动算top/left"变成了两行CSS:anchor-name和position: anchor()。Popper.js和Floating UI为了一个tooltip引入十几KB代码的时代,正在走向终点。sibling-index()和sibling-count()让CSS知道了"我是第几个"和"一共有几个",交错动画、圆形菜单、扇形布局从"JS遍历写内联样式"搬回了样式表。
这些变化的共同逻辑是:把"计算"从JavaScript的中间层,收回到平台自己的管线里。 浏览器不再只是一个"渲染你算好的结果"的画布。它开始自己算。
二、流式渲染的"框架特权",正在被平台拿走
Pretext解决的是"视觉层"的黑盒。2026年另一条更隐蔽的战线,在"交付层"。
HTML从诞生之日起就是从上到下顺序交付 的。内容生成顺序和展示顺序不一致时,传统方案要么等全部就绪再返回整个页面,要么用React Server Components或Next.js Streaming在框架层面实现异步填充。
2026年,Chrome的声明式部分更新 把这个能力下沉到了平台层。核心原语只有两个:<?marker>处理指令和带for属性的<template>元素。
html
<div><?marker name="results">Loading...</div>
<!-- 稍后在HTTP响应中流式传输 -->
<template for="results">
Here is some <em>HTML content</em>!
</template>
浏览器看到<?marker>时记下位置,不做任何事。当服务器稍后流式传输到<template for="results">时,浏览器自动把内容填充到那个位置 。模板里还可以嵌套新的<?marker>,实现多次渐进更新。
这意味着你不再需要选择一个特定的框架来获得流式渲染。 任何服务端------Next.js、Nuxt、SvelteKit,或者你自己手写的Node服务------都可以通过输出标准HTML标记,让浏览器原生地执行流式渲染。框架不再需要"发明"自己的流式协议。浏览器给了标准答案。
三、导航与交互:从"拼凑"到"原语"
如果说过往的SPA路由是一部"用History API的零件手工拼装"的机器,2026年这台机器终于有了原厂引擎。
Navigation API在2026年1月达到Baseline Newly Available ,Chrome、Edge、Firefox 147、Safari 26.2全面支持。History API的创造者Ian Hickson曾把pushState()称为他"最喜欢的错误",因为这套为多页应用设计的API,迫使每个SPA团队自己拼凑点击监听、popstate处理和边缘情况。
Navigation API把一切收敛到一个navigate事件。点击链接、提交表单、浏览器前进后退、代码调用------所有导航类型走同一个入口 。event.intercept()自动处理URL更新、历史栈管理和焦点恢复。navigation.entries()让你第一次能读取完整的历史栈,面包屑、多步表单、撤销/重做从"几乎做不到"变成了一行事。
而在更前沿的交互层,WebMCP正在重新定义"网页如何被AI Agent使用" 。传统Agent靠截图、OCR、模拟点击来"假装人类",WebMCP让网站主动交出结构化的工具定义------Agent直接调用search_flights或add_to_cart,不需要猜按钮在哪、不需要处理下拉菜单加载慢半拍。从"视觉模拟"到"逻辑直连" ,网页的"可操作性"正在成为和"可发现性"同等分量的工程维度。
四、工具链的"AI原生":一个编译器用8倍速重写了另一个编译器
平台层在收回能力。工具链层,Rust和AI正在联手重写规则。
2026年10月,Cloudflare和VoidZero发布了tsrs ------一个用Rust重写的TypeScript编译器,孵化在Oxc工具链里。 headline数字是:类型检查快8倍,内存少70% 。在Owner.com一个37,000个文件的monorepo上,TypeScript 7.0需要19 GiB内存、80秒;tsrs做到了7秒。
但真正值得停下来看一眼的,是tsrs的生产方式 。Max Schwenk在详细的复盘里写道,他"零代码 "------没有亲手写一行Rust,而是指挥Claude Opus 5.5领导的Agent团队,以TypeScript自身的15,197个一致性测试用例作为规格,产出了一个忠实的移植。
这不再是"AI补全几行代码"。这是一条完整的编译器移植产线:人类定义目标和验收标准,Agent负责实现和迭代,测试套件充当裁判。 Rust提供了"快且安全"的运行时保证,AI提供了"大规模机械转换"的执行带宽。两者叠加,让"把百万行级的基础设施换一种语言重写"从一个需要数年的豪赌,变成了一个可以在一段时间内收敛的工程任务。
五、把这些放在一起看:前端开发者的"价值锚点"正在迁移
Pretext让排版不再依赖Reflow。声明式部分更新让流式渲染不再依赖框架。Navigation API让路由不再依赖手写拼凑。WebMCP让Agent交互不再依赖"假装人类"。tsrs展示了工具链重写可以不再依赖大规模人力投入。
这五件事指向同一个方向:过去十年里,前端开发者花大量时间"填补平台空缺"的工作,正在被平台本身和AI同时拿走。
这并不是说"前端要消失了"。它说的是**"前端"这个词所指向的核心能力,正在发生一次根本性的位移**。
第一,从"实现"转向"定义边界"。 当Pretext能算排版、当CSS能算位置、当tsrs能靠测试用例驱动移植,真正稀缺的不再是"把逻辑翻译成代码"的带宽。稀缺的是决定什么该被算、什么该被约束、什么该被验证 的判断力。AI Agent需要Catalog来约束它能生成什么,WebMCP需要你定义哪些能力可以被调用,React Compiler需要你理解"通知之后"和"通知本身"的边界------这些定义工作,平台和AI都替你做不了。
第二,"删代码"正在成为一项比"写代码"更核心的能力。 你的package.json里可能躺着Popper.js(Anchor Positioning已覆盖)、dayjs(Temporal已覆盖)、手写的路由监听(Navigation API已覆盖)、自定义的流式渲染逻辑(声明式部分更新已覆盖)。2026年最划算的性能优化,可能是删掉一个npm uninstall。
第三,AI协作的"规格设计"能力,正在成为工程效率的新杠杆。 tsrs的案例说明了一件事:当AI能执行大规模机械转换时,你给的"规格"质量,直接决定了产出的质量和收敛速度。15,197个测试用例就是规格。设计系统、Schema、类型定义、一致性测试------这些"让AI有据可依"的工件,正在从"文档"变成"工程输入"。
写在最后
2026年的前端,正在经历一次安静的"重心下移"。
平台在做过去框架做的事:流式渲染、路由管理、浮层定位、Agent交互。AI在做过去人做的事:大规模代码迁移、编译器的机械性移植、重复性实现。工具链在变快,平台在变强,AI在执行层的能力在膨胀。
但所有这些"变强",都在把同一个问题推到你面前:当"写出来"的成本趋近于零时,"写什么"和"不写什么"的权重,趋近于一切。
Pretext的作者Cheng Lou说,他从"地狱深处"带回了未来数年UI设计最重要的基石之一。这个基石的真正意义,不在于它让排版快了1200倍,而在于它逼着所有人重新回答一个问题:在一个平台和AI都能"算"和"写"的世界里,你作为前端工程师,到底在"定义"什么。