Nodejs ejs如何指定一部分页面不进行渲染
Nodejs ejs如何指定一部分页面不进行渲染
我想知道如何在ejs指定一部分页面不进行渲染,比如想在ejs页面中原样显示**<%= title %>**,而不是显示tile的值。
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 转义字符,将 <
和 >
替换为它们的实体形式 <
和 >
。
<%= title %>
这种方法可以避免 EJS 解析这部分内容。
总结
以上两种方法都可以帮助你在 EJS 页面中指定一部分内容不被解析和渲染。选择哪种方法取决于你的具体需求和偏好。
是不是想要这个效果 <%- title %> 其他可参考这里 http://www.9958.pw/post/ejs
&lt;%- title %&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 %>
字符串。