如何在 EJS 模板中实现 HTML 片段的延迟渲染(仅表单提交后显示)

夏杰姑娘_9099

夏杰姑娘_9099

2026-04-26

835人浏览

原创

如何在 EJS 模板中实现 HTML 片段的延迟渲染(仅表单提交后显示)

本文介绍如何利用 ejs 的服务端条件渲染机制,配合 express 路由逻辑,确保特定 html 内容仅在表单 post 提交后动态生成并显示,而非页面首次加载时就渲染。

本文介绍如何利用 ejs 的服务端条件渲染机制,配合 express 路由逻辑,确保特定 html 内容仅在表单 post 提交后动态生成并显示,而非页面首次加载时就渲染。

在构建基于 Node.js + Express + EJS 的 Web 应用时,常需控制页面某部分内容“仅在用户完成表单提交后才呈现”——例如搜索食谱后展示结果详情。这并非前端 JavaScript 的“隐藏/显示”切换,而是真正的服务端延迟渲染(late execution):HTML 片段在首次 GET 请求时不参与输出,仅当 POST 请求成功处理并重新渲染模板时才被注入响应流。

核心思路是:通过路由状态驱动 EJS 模板的条件分支。我们引入一个布尔上下文变量(如 submitted),由服务器在不同请求方法中传入不同值,EJS 利用 语法精确控制 DOM 块的渲染时机。

✅ 正确做法(服务端条件渲染):

Browser Js
Browser Js

轻量级CDP浏览器控制,适用于AI代理。相较于内置浏览器工具,token消耗降低3‑10倍,仅在浏览时使用。

下载
  

{ %>

    ? 关键服务端逻辑(Express):

    const express = require('express');
    const bodyParser = require('body-parser');
    const app = express();
    
    app.use(bodyParser.urlencoded({ extended: true }));
    app.set('view engine', 'ejs');
    app.set('views', './views');
    
    // GET:初始页面 —— submitted = false,仅渲染表单
    app.get('/Recipes', (req, res) => {
      res.render('recipe', { submitted: false });
    });
    
    // POST:表单提交后 —— processed data + submitted = true,渲染完整内容
    app.post('/Recipes', (req, res) => {
      const recipeName = req.body.recipeName || 'Default Recipe';
      const instructions = [
        `Fetch ingredients for ${recipeName}`,
        `Preheat oven to 180°C`,
        `Bake for 45 minutes`
      ];
    
      res.render('recipe', {
        submitted: true,
        Name: recipeName,
        Instructions: instructions
      });
    });

    ⚠️ 注意事项:

    • 不要依赖纯前端 JS 控制“执行”: 是服务端执行的 EJS 表达式,无法被浏览器 JS 延迟触发;试图用 document.addEventListener('submit', ...) 动态插入 EJS 代码是无效的,因为此时服务端早已完成渲染。
    • 避免客户端条件判断混淆:if (submitted) 必须在 EJS 模板中作为服务端逻辑使用,而非写成 <script>if (<%= submitted %>) {...}</script>——后者会将布尔值转为字符串 "true"/"false",且仍属于服务端一次性输出。
    • 数据安全:所有用户输入(如 req.body.recipeName)应经校验与转义后再传入模板,防止 XSS;EJS 的 默认已做 HTML 转义,但若需渲染富文本,请改用 并自行净化。
    • 用户体验增强(可选):如需平滑过渡,可在 EJS 中添加 CSS 类配合 transition,或结合 fetch() 实现无刷新提交(此时需改为返回 JSON 并由前端 JS 渲染,属于另一种架构,不改变本方案的服务端延迟本质)。

    总结:所谓“HTML 的 late execution”,在服务端模板引擎语境下,本质是基于请求生命周期的状态驱动渲染。通过 Express 路由区分 GET/POST,并将业务状态(如 submitted: true)作为上下文传递给 EJS,即可精准、可靠、安全地实现内容的按需呈现。

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    html js 表单提交

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    2023.06.14

    5795

    7

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    2023.06.21

    3292

    4

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.07.31

    2950

    5

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.01

    2979

    5

    html是什么
    html是什么

    HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

    2023.08.11

    4779

    6

    html字体大小怎么设置
    html字体大小怎么设置

    在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

    2023.08.11

    2921

    3

    html转txt
    html转txt

    html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.31

    2729

    3

    html文本框代码怎么写
    html文本框代码怎么写

    html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

    2023.09.01

    2428

    6

    HTML嵌入CSS样式的方法
    HTML嵌入CSS样式的方法

    HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

    2023.09.20

    2468

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    GDB 17.2 官方文档集合
    GDB 17.2 官方文档集合

    共0课时 | 0人学习

    Bootstrap 入门安装配置
    Bootstrap 入门安装配置

    共0课时 | 0人学习

    38+ PhpStorm 提示和技巧
    38+ PhpStorm 提示和技巧

    共1课时 | 221人学习