Nodejs ejs如何指定一部分页面不进行渲染

Nodejs ejs如何指定一部分页面不进行渲染

我想知道如何在ejs指定一部分页面不进行渲染,比如想在ejs页面中原样显示**<%= title %>**,而不是显示tile的值。

6 回复

Node.js EJS 如何指定一部分页面不进行渲染

在使用 EJS(Embedded JavaScript)模板引擎时,有时你可能希望在页面中直接显示 <%= ... %> 这样的标签,而不是将其替换为变量的值。EJS 提供了一些方法来实现这一点。

方法一:使用 <%--%>

你可以通过使用 <%--%> 来包含原始的 EJS 语法,并且确保这些标签不会被解析为变量。

<%- '<%= title %>' -%>

这样,EJS 将会原样输出 <%= title %>,而不会尝试解析它。

示例代码

假设我们有一个简单的 EJS 模板文件 example.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Example Page</title>
</head>
<body>
    <h1>Welcome to the Example Page</h1>
    
    <!-- 原样显示 EJS 语法 -->
    <%- '<%= title %>' -%>

    <!-- 正常的 EJS 变量渲染 -->
    <p><%= title %></p>
</body>
</html>

在 Node.js 中,你可以这样渲染这个模板:

const ejs = require('ejs');
const fs = require('fs');

// 读取 EJS 文件
const template = fs.readFileSync('./example.ejs', 'utf8');

// 渲染模板
const renderedHtml = ejs.render(template, { title: 'My Title' });

console.log(renderedHtml);

在这个例子中,<%- '<%= title %>' -%> 会被原样输出,而 <%= title %> 会被替换为变量 title 的值。

方法二:转义 HTML 字符

另一种方法是使用 HTML 转义字符,将 <> 替换为它们的实体形式 &lt;&gt;

&lt;%= title %&gt;

这种方法可以避免 EJS 解析这部分内容。

总结

以上两种方法都可以帮助你在 EJS 页面中指定一部分内容不被解析和渲染。选择哪种方法取决于你的具体需求和偏好。


是不是想要这个效果 <%- title %> 其他可参考这里 http://www.9958.pw/post/ejs

&amp;lt;%- title %&amp;gt;

如果想同时使用服务端和客户端渲染,怎么办? 有啥办法可以指定页面中的某个部分不进行渲染么?

去看一下ejs的guide吧~不用2分钟时间

在EJS模板引擎中,默认情况下,<%= title %>会被解析并插入到变量title的值。如果你希望在页面上原样显示<%= title %>而不是替换为变量的值,可以通过转义或使用不同的标签来实现。

方法1:转义

你可以直接将HTML转义,EJS提供了内置的方式来处理这种情况:

<%- "<%= title %>" %>

<%- %> 这种方式会将内容作为纯文本输出,不会进行转义。但是在这个例子中,我们想要保持<%= 本身不变,因此我们可以简单地用 <%- 来输出它:

<%- '<%= title %>' %>

这将在页面上输出 <%= title %> 而不是 title 的值。

方法2:自定义标签

EJS允许你配置自定义的标签来避免默认的解析行为。你可以在初始化EJS时设置这些选项:

const ejs = require('ejs');
ejs.open = '{{'; // 修改开始标签
ejs.close = '}}'; // 修改结束标签

// 在模板中使用新的标签
{{= title }}

但这种方法可能需要对整个项目进行较大的改动,所以一般推荐使用方法1。

示例代码

假设你有一个EJS文件叫做example.ejs,其内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <div>
        <%= '<%= title %>' %>
    </div>
</body>
</html>

当你在Node.js中渲染这段代码时,结果将会是:

<div>
    <%= title %>
</div>

这样就实现了你的需求,在页面上显示原始的<%= title %>字符串。

回到顶部