You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:Node.js中服务器端渲染含内嵌JS的HTML的工具

问题描述

我们有一段包含DOM操作脚本的HTML代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script>
            let el = document.createElement('div');
            let text = document.createTextNode('Hello World!');
            el.appendChild(text);
            document.body.appendChild(el);
        </script> 
    </body>
</html>

这段代码在浏览器中运行后,会生成包含新增DOM元素的最终HTML:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script>
            let el = document.createElement('div');
            let text = document.createTextNode('Hello World!');
            el.appendChild(text);
            document.body.appendChild(el);
        </script> 
        <div>Hello World!</div>
    </body>
</html>

现在需要将这类HTML发送给不支持JavaScript执行的代理程序,要求代理能直接获取到渲染完成后的最终HTML。因此需要在Node.js环境下,先在服务器端执行HTML中的脚本完成DOM渲染,再将处理后的HTML发送出去。请问Node.js中有哪些工具可以实现这一需求?

解决方案:Node.js可用工具
  • Puppeteer:Chrome官方推出的Node.js库,可启动无头Chrome浏览器实例,加载目标HTML并执行其中的JavaScript代码,之后就能直接获取渲染完成的完整DOM结构。它能模拟真实浏览器环境,复杂的JS交互、异步渲染等场景都能可靠处理。
  • JSDOM:一款纯JavaScript实现的DOM环境模拟器,能在Node.js中模拟浏览器的DOM API,加载HTML后执行其中的脚本,完成DOM操作。如果需要解析处理后的DOM,还可以搭配Cheerio使用,适合不需要完整浏览器特性的轻量场景。
  • Playwright:与Puppeteer类似,但支持Chrome、Firefox、Safari等多种浏览器的无头模式,能加载HTML、执行脚本并获取渲染后的页面内容,兼容性和灵活性更强,适合需要多浏览器渲染结果一致的场景。
  • HtmlUnit(Node.js封装版):原本是Java的无界面浏览器模拟器,有对应的Node.js封装包,能执行JavaScript并处理DOM渲染,资源占用较低,适合对性能要求较高的轻量渲染场景。

内容的提问来源于stack exchange,提问作者Yousef Essam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:20:30