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

如何获取EJS模板渲染完成后的原始HTML字符串

实现方法

Express 内置的 res.render() 本身就支持获取渲染后的HTML字符串,不需要额外封装工具方法,你可以通过传入第三个回调参数实现:

exports.getintroDetails = async (req, res) => {
    try {
      const details = await IntroModel.find();
      // 传入第三个回调参数,渲染完成后会自动执行
      res.render("final", { details , user:req.user }, (renderErr, htmlString) => {
          if (renderErr) {
              console.log(renderErr.message);
              return res.status(500).send('模板渲染失败');
          }
          // 此处的htmlString就是final.ejs传入数据渲染完成后的完整原始HTML字符串
          // 你可以按需操作:存入数据库、写入本地文件、加工后再返回给客户端均可
          // 示例:直接将HTML源码返回给客户端展示
          return res.send(`<pre>${htmlString.replace(/</g, '&lt;')}</pre>`);
      });
    } catch (error) {
      console.log(error.message);
    }
};

补充说明

  • 常规调用res.render()不传回调时,Express会自动将渲染结果作为响应返回给客户端;传入回调后则不会自动返回,你可以完全自主处理渲染得到的HTML字符串。
  • 如果你需要在非请求上下文的场景下(比如定时任务、公共工具函数里)渲染ejs模板拿HTML字符串,可以直接调用ejs的内置方法:
    1. 先确保已经安装ejs依赖:npm i ejs
    2. 示例代码:
    const ejs = require('ejs');
    const path = require('path');
    
    // 填写你的final.ejs文件的绝对路径,示例仅供参考
    const templatePath = path.join(__dirname, '../views/final.ejs');
    const htmlString = await ejs.renderFile(templatePath, { details, user: req.user });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:06