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

如何在EJS中仅渲染<%-body%>标签,实现无刷新修改页面主体内容?

EJS 局部渲染相关问题解答

关于仅渲染<%- body %>的支持情况

EJS 本身是服务端模板引擎,默认不支持浏览器端仅局部渲染<%- body %>标签。它的核心渲染逻辑是服务端拼接完整 HTML 后返回给浏览器,常规页面请求场景下必然会触发整页刷新。

无整页刷新修改主体内容的实现方案

你可以结合前端请求 API 配合服务端改造实现需求,具体操作如下:

  • 服务端新增单独返回 body 内容的接口:针对每个侧边栏对应的路由,新增一个只渲染<%- body %>部分、不包裹布局模板的接口,返回纯 HTML 片段
  • 前端拦截侧边栏链接的点击事件:阻止默认的跳转行为,用fetch或XMLHttpRequest调用上一步对应的接口获取 body 的 HTML 片段
  • 替换页面主体内容:将获取到的 HTML 直接赋值给主体区域 DOM 元素的 innerHTML 属性即可

如果你用的是 Express 框架搭配 EJS,可以直接在渲染时关闭布局来输出纯内容片段:

// 常规渲染(带全局布局,返回完整页面)
app.get('/page', (req, res) => {
  res.render('page', { layout: 'main' })
})
// 局部渲染接口(仅返回body内容片段)
app.get('/page/fragment', (req, res) => {
  res.render('page', { layout: false })
})

如果你的项目默认启用了布局中间件,单独给片段接口关闭布局即可,不需要额外修改现有 EJS 模板逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:27:02