我正在使用 sails.js 开发一个简单的 Web 应用程序。
在我的前端代码中,我循环遍历控制器发送的对象数组,并且正在搜索特定对象。我想在找到对象后打破循环。有没有一种干净的方法可以使用 ejs 模板语言来做到这一点?
我在EJS官方网站和sails网站上都找不到任何相关信息。
到目前为止我天真地尝试过:
<% objects.forEach(function(object) { %>
<% if(object.someId == someValue) {%>
<%= object.name %>
<% break %> <!-- This raise an illegal statement exception -->
<% } %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
以下代码按预期工作,但我正在寻找更干净的解决方案(如果有)
<% var found = false %>
<% objects.forEach(function(object) { %>
<% if(object.someId == someValue && !found) {%>
<%= object.name %>
<% found = true %>
<% } %>
<% } %>
Run Code Online (Sandbox Code Playgroud) 当各种事件发生时,我混合使用ejs和emailjs在我的 Node.js 应用程序中发送电子邮件。我想在发送电子邮件时将 Base64 图像(一个小徽标)嵌入到电子邮件中,但 Outlook 和 Gmail(加上 Google 的 Inbox)都无法呈现该图像。
我使用这段代码来查找图像的 mime 类型并将 base64 字符串组合在一起:
MyApp.prototype.ImageToBase64 = function(image) {
var mime = require("mime")
file = fs.readFileSync(__dirname + "/images/" + image, { encoding: 'base64'})
return 'data:' + mime.lookup(image) + ';base64,' + file;
}
Run Code Online (Sandbox Code Playgroud)
这非常有用,因为我可以将生成的字符串复制并粘贴到浏览器中并查看图像。但是当我通过 emailjs 发送电子邮件时,Outlook 将+s 转换为+. 当我在 Gmail 中“查看原始内容”时,base64 被分成“块”。每个块都位于换行符上,并且每行以 结尾=。如果我采用 Gmail 的版本并删除=换行符,然后将其粘贴到我的浏览器中,则整个图片可以完美加载,但它只是拒绝加载其他任何地方,无论用户是否在我的联系人列表中。
这是我用来发送电子邮件的代码:
// Host, username, password and SSL (false) all set above here
server.send({ …Run Code Online (Sandbox Code Playgroud) 您好,我是 HTML 和 JS 新手,因此想寻求一些帮助。这里我想根据 if 语句为 true 或 false 显示两个不同的 HTML 元素。然而,它不起作用。我可以寻求帮助吗?(:
<!DOCTYPE html>
<html>
<body>
<script>
if (!user) {
<h1> there is no user </h1>
} </script>
if (user) {
<button type="button">Click Me!</button>
} </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取数据(从 mongo 获取)以显示到文本区域中。其目的是让我可以编辑数据库中的数据,而无需实际接触数据库本身。我可以在普通 HTML 标签中显示数据,但我对如何让它在文本区域(或允许我编辑和重新提交新数据的任何其他标签)中显示它一无所知。
我正在使用 EJS 进行渲染,到目前为止,所有内容都可以正确显示
<%= text %>
Run Code Online (Sandbox Code Playgroud)
我只需要它在可编辑文本区域内工作
我在 Express 和 MongoDB 上有一个简单的博客应用程序,使用 EJS 来呈现我的数据。
我遇到的问题是我希望它的样式像一个段落:
<div class="show-post__content">
<%= post.body %>
</div>
Run Code Online (Sandbox Code Playgroud)
post.body的内容是:'<p>Hello there, this is a new post.</p>'
但它的渲染是这样的:
如果图片不起作用,它会显示出可见的括号,而不是看起来像实际的 html p 标签(如果这有意义的话)...有人知道如何解决这个问题吗?
非常感谢,
拉夫
我似乎无法找到为什么会发生这种情况,我在大多数应用程序中都有几乎相同的代码,它几乎是样板,我只是试图将 HTML 的顶部分成 header.ejs 并将底部分成一个footer.ejs 文件,然后将它们包含到我的 index.ejs 中。当我将所有代码保存在 index.ejs 文件中时,它很好。我也试过删除这样的空格 <%include ./partials/header.ejs%>,添加'-' <%- include ./partials/header.ejs %>,即使我有这个错误,我仍然收到这个错误相同的代码 - 我的文件中的相同语法。
<% include ./partials/header.ejs %>
<h1>YO HO HO LET THIS WORK!</h1>
<% include ./partials/footer.ejs %>
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>P2</title>
<link rel="stylesheet" href="/stylesheets/app.css">
</head>
<body>
Run Code Online (Sandbox Code Playgroud)
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我的数据库中有一个scores数组。我想从我的 ejs 网页中的数组中提取最大值。
我不确定,但尝试了以下代码:
<div>
<%-Math.max(user.scores)%>
</div>
Run Code Online (Sandbox Code Playgroud)
这没有给出期望的结果。
例如,如果scores数组是 [1, 4, 99, 2, 7],它应该在我的网页上给我 99。
我试图在 EJS 页面上仅显示键和值。
<span><%= JSON.stringify(results.conversion_rates) %></span>
Run Code Online (Sandbox Code Playgroud)
留给我
{"USD":1,"AED":3.6721,"ARS":81.0455,"AUD":1.3564,"BGN":1.6324}
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除括号和引号?
如果有帮助,这是我的 server.js 路由:
app.get('/results', (req, res) => {
const query = req.query.q;
axios
.get(`https://v6.exchangerate-api.com/v6/a66b8aae93f6e7abafe3aab5/latest/${query}`)
.then(function (response) {
const currencyPair = `Conversion Rates for ${query}`;
console.log(response)
res.render('results', {
currencyPair,
results: response.data,
});
})
});
Run Code Online (Sandbox Code Playgroud) 我只是想简单问一下我有这样的错误
错误:找不到“<%=”的匹配关闭标记。在 C:\Users\User\Documents\latihannode.js\nodejs8\library\node_modules\ejs\lib\ejs.js:693:19 在 Array.forEach () 在 Template.generateSource (C:\Users\User\Documents \latihannode.js\nodejs8\library\node_modules\ejs\lib\ejs.js:678:15) 在 Template.compile (C:\Users\User\Documents\latihannode.js\nodejs8\library\node_modules\ejs\lib \ejs.js:557:12) 在 Object.compile (C:\Users\User\Documents\latihannode.js\nodejs8\library\node_modules\ejs\lib\ejs.js:389:16) 在handleCache (C: \Users\User\Documents\latihannode.js\nodejs8\library\node_modules\ejs\lib\ejs.js:212:18) 在 tryHandleCache (C:\Users\User\Documents\latihannode.js\nodejs8\library\node_modules \ejs\lib\ejs.js:251:16) 在 View.exports.renderFile [作为引擎] (C:\Users\User\Documents\latihannode.js\nodejs8\library\node_modules\ejs\lib\ejs.js :482:10) 在 View.render (C:\Users\User\Documents\latihannode.js\nodejs8\library\node_modules\express\lib\view.js:135:8) 在 tryRender (C:\Users\User \Documents\latihannode.js\nodejs8\library\node_modules\express\lib\application.js:640:10)
这是我使用 ejs 使用的代码
<ul class="nav navbar-nav">
<% for(let i=0; i<nav.length; i++) { %>
<li>
<a href="<%=nav[i].link"><%nav[i].title%></a>
</li>
<%}%>
</ul>
Run Code Online (Sandbox Code Playgroud)
这是来自我的 NodeJS js 文件。当我渲染“index”时,我将索引变量传递给 EJS
app.get('/', (req, res) => {
res.render(
'index',
{
nav: [{ link: '/buku', title: 'Buku' },
{ link: '/penulis', title: 'Penulis' …Run Code Online (Sandbox Code Playgroud)