当前位置:首页 > 休闲 > html编译

html编译

2026-10-17 05:45:02 [探索] 来源:力不从心网

浏览器拿到一段HTML字符串,编译不会直接把它变成你看到的编译页面。中间隔着一个叫“编译”的编译过程——虽然很多人更习惯叫它“解析”或“渲染”。

我最早意识到这件事,编译是编译写了一个 `

` 标签却忘了闭合。页面没报错,编译但后面的编译所有元素都莫名其妙缩进了那个div里。打开开发者工具一看,编译浏览器已经自作主张帮我补上了 `
`,编译位置却不是编译我想要的。那一刻我才明白:浏览器不是编译老老实实读你的代码,它在“理解”你的编译代码。

从字符到树

HTML编译的编译第一步,是编译把一堆字节变成一棵树。听起来抽象,编译拆开看很具体。

网络传过来的HTML是一串字节。浏览器先按编码(通常是UTF-8)把它们转成字符,再把字符按标签规则切成一个个“词”——`

` 是一个词,`class="intro"` 是一个词,`>` 也是一个词。这个过程叫词法分析。接着语法分析上场,把这些词拼成节点:元素节点、文本节点、注释节点。遇到 `

` 就新建一个元素节点,遇到文字就挂一个文本节点上去。

但HTML不是编程语言,它没有严格的语法。你少写一个闭合标签,浏览器不会罢工。它有一套容错规则,比如 `

` 里面不能再套 `

`,遇到嵌套它会自动闭合前一个。这些规则写在HTML规范里,每个浏览器都得遵守。所以同一段“烂代码”在Chrome和Firefox里渲染出来基本一样,不是巧合。

DOM树不是终点

解析完,你得到一棵DOM树。但DOM树只描述了结构,不知道每个节点长什么样、放在哪里。样式计算紧接着开始。浏览器把CSS规则和DOM节点匹配,算出每个节点最终的颜色、字号、边距。这一步有个细节:选择器是从右往左匹配的。`.nav li a` 会先找到所有 ``,再往上查父级是不是 `

  • `,再往上是不是 `.nav`。这样设计是为了尽早排除不匹配的节点,速度更快。

    样式算完,进入布局阶段。浏览器遍历DOM树,计算每个盒子在屏幕上的确切位置和尺寸。这里有个容易踩的坑:如果你在JS里先读 `offsetHeight` 再改样式,再读一次,浏览器会强制同步布局两次。性能就是这么掉的。

    绘制与合成

    布局之后是绘制。浏览器把每个节点画成像素,填充颜色、边框、阴影、文字。但绘制不是直接画到屏幕上,而是分成多个图层。比如一个带动画的元素会被提升为独立图层,由GPU单独合成。这就是为什么 `transform` 动画比 `left` 动画流畅——前者只触发合成,后者要重新布局和绘制。

    最后,合成器把各图层按正确顺序拼起来,输出到屏幕。你看到页面了。

    一个真实的观察

    我做过一个测试:一个包含5000个 `

    ` 的页面,如果每个div都设置不同的 `box-shadow`,滚动会明显卡顿。打开Chrome的Performance面板,发现绘制时间占了帧时间的一大半。把阴影改成 `border` 或纯色背景后,帧率立刻回到60fps。这说明编译过程中的每一步都有成本,而成本往往藏在你不注意的样式属性里。

    HTML编译不是“把代码变成页面”这么简单。它是一连串决策:容错、匹配、计算、分层。浏览器替你做了很多选择,有些是规范要求的,有些是性能权衡。理解这些,你写HTML时就会少一点“为什么没生效”的困惑,多一点“我知道它接下来会做什么”的笃定。

    (责任编辑:热点)

  • 推荐文章
    • Web渗透教程

      Web渗透教程 凌晨两点,我盯着屏幕上的登录框,手边凉掉的咖啡已经没了热气。密码字典跑完最后一组组合,服务器返回的依然是冷冰冰的"Access Denied"。这种时候你才会明白,Web渗透根本不是电影里那种敲几下键 ...[详细]
    • 北极熊扫描器

      北极熊扫描器 北极熊扫描器不是杀毒软件,也不是防火墙。它干的活儿更底层——盯着网络里每一台设备的开放端口,看谁在偷偷开门。 我第一次接触这东西是在一家做工业控制系统的公司。他们的运维老张给我看了屏幕上的日志,密密麻 ...[详细]
    • 渗透检测操作视频

      渗透检测操作视频 渗透检测说白了就是让液体钻进缺陷里再爬出来。我第一次看老师傅做这个,他拿喷壶往焊缝上喷红色渗透剂,等了十分钟,擦干净,再喷白色显像剂。裂纹立刻变成一道红印子,跟变魔术似的。视频里要拍清楚的就是这几个步 ...[详细]
    • 小米一元流量漏洞

      小米一元流量漏洞 2018年12月,小米MIUI论坛上有个帖子被顶到了首页。发帖人贴了一张截图:他的小米8在一天之内跑了6GB流量,但手机设置里显示"一元流量"功能已关闭。帖子底下跟了三百多条回复,有人骂"偷跑流量", ...[详细]
    • 漏洞exp什么意思

      漏洞exp什么意思 漏洞exp什么意思 你半夜三点盯着屏幕,某个CVE编号刚冒出来,论坛里已经有人甩出一段Python脚本。那个脚本就是exp——exploit的缩写,直译过来叫“利用”。说白了,exp就是一段能真正打 ...[详细]
    • 品牌渗透

      品牌渗透 去年夏天我在长沙待了三天,住在五一广场附近。出门左转是茶颜悦色,右转还是茶颜悦色。隔条马路,一家挨着一家,密度高到让人觉得这品牌是不是在搞行为艺术。但奇怪的是,每家店都在排队。我站在队伍里数了一下,前 ...[详细]
    • 死亡空间坍塌下载1080p

      死亡空间坍塌下载1080p 《死亡空间:坍塌》的1080p版本,在动画爱好者圈子里一直有个尴尬的定位。它不是那种随便找个在线网站就能点开看的片子,也不是蓝光收藏党会反复拿出来炫耀的经典。你要真去找,会发现资源散落在各种老论坛、磁 ...[详细]
    • 三空间一资源

      三空间一资源 ```html 三空间一资源 三空间一资源 去年冬天,我在杭州跟一个做社区团购的团队聊了三个小时。他们仓库里堆着三百箱赣南脐橙,卖不动,急得跺脚。可同一时间,三公里外一个老小区门口,几个 ...[详细]
    • 一级建造师查询官方网站

      一级建造师查询官方网站 住建部官网的“全国建筑市场监管公共服务平台”俗称“四库一平台”)就是一级建造师查询的官方入口。域名是,别记错。很多人一搜“一建查询”就点进各种挂着“官网”字样的商业网站,结果查到的证书信息要么滞后要么 ...[详细]
    • 任意文件上传漏洞的危害

      任意文件上传漏洞的危害 一个网站如果允许用户上传文件,却没把上传后的处理逻辑做严实,攻击者就能往服务器里塞一个后门脚本。这个脚本可能是 PHP、JSP、ASP 或者 Python,具体取决于服务器跑什么环境。传上去之后,攻击 ...[详细]
    热点阅读