Node.js中EJS模板的<%- body %>及其中'body'的作用与原理
EJS布局中
body变量的功能与工作原理 前置说明
EJS的特性里明确提到:使用<%- body %>进行无转义缓冲。你提供的layout.ejs核心代码如下:
<body> <div class="container"> <%- body %> </div> <!-- Bootstrap相关脚本省略 --> </body>
body的核心功能
这里的body是EJS布局机制里的内容占位符变量,核心作用是作为内容插槽:
- 实现布局复用:将页面通用结构(如容器、全局脚本、导航/页脚)与页面独有内容分离,避免重复编写相同代码
- 承载动态内容:所有具体页面的自定义HTML内容,最终都会被插入到这个
body标记的位置
工作原理
- 布局模板定义通用结构:
layout.ejs作为全局通用模板,编写所有页面共享的代码,仅用<%- body %>标记动态内容的插入位置。使用<%- %>而非<%= %>的原因是支持无转义输出——如果具体页面包含HTML标签,会直接输出而不会被转换为字符实体(例如<p>不会变成<p>),确保HTML能正常渲染。 - 页面视图编写独有内容:你可以创建单独的EJS文件(如
home.ejs、profile.ejs),这些文件仅需编写当前页面的独有内容,无需重复编写布局中的通用代码。 - 后端渲染拼接完整页面:在Express等后端框架中,当渲染某个具体页面时,会指定使用
layout.ejs作为布局。框架会先渲染具体页面的内容,并将结果赋值给body变量;接着渲染布局文件,将body的内容替换到<%- body %>的位置;最后将完整的HTML页面返回给浏览器。
内容的提问来源于stack exchange,提问作者Aquarius_Girl
相关产品推荐
相关产品推荐

