我将一个对象数组传递给一个 EJS 模板,我想使用数组的常规 .map() 方法将其映射到链接中。但是由于我无法弄清楚的原因,我传递给 map() 的回调在 EJS 中无法按照我期望的方式工作,并且我得到了空结果。
我的数据是一个对象数组,每个对象都有一个“部分”和一个“名称”键。此数组作为“条目”传递给模板:
siteHeaders = [ { section: "home", name: "Home"},
{ section: "about", name: "About Me"},
... plus few more ]
Run Code Online (Sandbox Code Playgroud)
模板看起来像这样,我把它放在一个名为 (surprise) 的局部变量中template:
<% entries = entries.map(function(elem) { -%>
<% return -%>
<a href="/<%= elem.section %>">
<%= elem.name %>
</a>
<% } ) -%>
<p><%- entries.join(" | ") %></p>
Run Code Online (Sandbox Code Playgroud)
这个模板的结果,当我打电话时require('ejs').render(template, {entries: siteHeaders})是:
<p> | | | | </p>
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么这在 EJS 模板中不起作用,当相应的 map 调用在 REPL 中工作得很好时:
> siteHeaders.map(function(e){ …Run Code Online (Sandbox Code Playgroud) 我正在使用<% include components/aside.ejs %>或<% include components/head.ejs %>在我的代码中的某个地方没有任何问题。但是当我include在这样的 for 循环中使用时
<%
for (var i = 0; i < 20; i++) {
include components/head.ejs;
}
%>
Run Code Online (Sandbox Code Playgroud)
,我明白了Unexpected identifier in [file path] while compiling ejs。
是否有任何我没有注意到的明显错误?
基地.ejs:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>My Diary</title>
<link rel="stylesheet" href="stylesheets/bootstrap.min.css">
<script src="javascripts/jquery.js" ></script>
<script src="javascripts/bootstrap.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function(){
});
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
索引.ejs:
<div class="container">
<!-- Button trigger modal -->
<h1>Welcome to Your Diary</h1>
<div>
<span class="label label-default">What would you like to do? </span>
<span class="label label-primary">Here are your Categories:</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想要块继承
我正在学习编写渐进式 Web 应用程序,所有示例都使用 html 文件。我更喜欢将 EJS 与节点服务器一起使用。是否可以缓存 ejs 以便可以在本地使用?
在浏览器的客户端作为 ejs 页面:
<script src="https://cdn.socket.io/socket.io-1.2.0.js">
</script>
<script>
var socket = io()
socket.on('message', function (msg) {
console.log(msg)
})
</script>
Run Code Online (Sandbox Code Playgroud)
在 Node Js 的服务器端:
var http = require('http').Server(app);
var io = require('socket.io')(http)
io.on('connection', function(socket){
console.log('a user connected')
socket.on('disconnect', function(){
console.log('user disconnected')
})
io.emit('message', json);
})
Run Code Online (Sandbox Code Playgroud)
我没有在 Node Js 控制台中获得“用户连接”日志。由于VAR插座= 10()是不工作或者是什么我不知道的问题。我可以在 .ejs页面中使用socket.io吗?我需要 ejs,我的应用程序中还需要 socket.io。任何帮助,将不胜感激。
我想要实现的是某种方式来缓存我可以在我的视图和路由中使用的mongoDB/Mongoose查询的结果。每当向集合中添加新文档时,我都需要能够更新此缓存。由于函数是异步的,我不确定这是否可行,如果可行,那么如何去做
这是我目前用于存储画廊的内容,但是每个请求都会执行此操作。
app.use(function(req, res, next) {
Gallery.find(function(err, galleries) {
if (err) throw err;
res.locals.navGalleries = galleries;
next();
});
});
Run Code Online (Sandbox Code Playgroud)
这用于获取画廊名称,然后将其显示在动态生成的画廊的导航栏中。画廊模型只设置了画廊的名称和一个slug
这是我导航中的EJS视图的一部分,它将值存储在下拉菜单中。
<% navGalleries.forEach(function(gallery) { %>
<li>
<a href='/media/<%= gallery.slug %>'><%= gallery.name %></a>
</li>
<% }) %>
Run Code Online (Sandbox Code Playgroud)
我正在开发的网站预计将获得数十万并发用户,因此如果不需要,我不想为每个请求都查询数据库,并且只要在创建新画廊时更新它。
我正在尝试使用节点 js 将图像上传到服务器以及本地文件夹。但问题是,当我尝试发布表单时,enctype图像仅保存在本地文件夹中,而不是保存在 mongodb 中。但是,如果我删除,enctype则图像仅保存在 mongodb 中。
<form method="POST" enctype="multipart/form-data" action="/posts" >Run Code Online (Sandbox Code Playgroud)
我的 server.js 文件 ---
//call module
var express = require('express');
var app = express();
var path = require('path')
var multer = require('multer')
//var upload = multer({dest: './uploads'})
var routes = require('./routes/index')
const bodyParser= require('body-parser')
//var port = process.env.PORT|| 3000;
// Multer path define
var storage = multer.diskStorage({
destination: './uploads',
filename: function(req,file,cb){
cb(null,file.fieldname + '_' + Date.now() +path.extname(file.originalname) );
}
});
// init upload
var …Run Code Online (Sandbox Code Playgroud)过去一个月我一直在研究这个问题,但没有找到任何有用的解决方案。我目前正在尝试使用 firebase 函数以及 express.js 和 EJS 视图引擎来托管网站。
我将讨论将静态 CSS 文件提供给 EJS 文件的问题。我已经看遍了,但似乎找不到任何有帮助的正确答案。
我有以下文件结构(在函数文件夹内):
这是我的 index.js:
const functions = require('firebase-functions');
const express = require("express");
const ejs = require("ejs");
var path = require('path');
// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
// exports.helloWorld = functions.https.onRequest((request, response) => {
// response.send("Hello from Firebase!");
// });
var app = express();
app.set('view engine', 'ejs');
// app.use('/static', express.static('public'));
app.use(express.static(__dirname + "/public"));
app.get("/", (request, response) => {
response.render("test");
}) …Run Code Online (Sandbox Code Playgroud)我想通过添加自定义规则来使用 prettier 来格式化我的 ejs 文件。
现在我正在为 ejs 文件使用 html 的文件关联。
我在 settings.json 文件中添加了以下代码: "files.associations": { "*.ejs": "html" },
我在我网站的个人资料页面上有这样的代码。
<div class="col-md-4">
<h2 class="textclass2" style="text-decoration: underline; margin-bottom: 10px"><%=playerdata.Player_Name%> AKA <%=playerdata.Player_NickName%></h2>
<a class="btn btn-dark btn-xs" href="<%=playerdata.Player_FBLink%>" id="fbclick" onClick="checkUrl()" style="font-size: 12px; color:#40FF40; margin-bottom: 10px "> Facebook </a>
<a class="btn btn-dark btn-xs" href="<%=playerdata.Player_InstagramLink%>" role="button" style="font-size: 12px; color:#40FF40; margin-bottom: 10px"> Instagram </a>
<a class="btn btn-dark btn-xs" href="<%=playerdata.Player_LinkedinProfile%>" role="button" style="font-size: 12px; color:#40FF40; margin-bottom: 10px"> LinkedIN </a>
<a class="btn btn-dark btn-xs" href="<%=playerdata.Player_TwitterLink%>" role="button" style="font-size: 12px; color:#40FF40; margin-bottom: 10px"> Twitter </a>
Run Code Online (Sandbox Code Playgroud)
这是使用 EJS 完成的。它们基本上是具有用户社交页面 URL 字符串的 href 标签。后端是一个MongoDB
问题 - 如果我在数据库的相应字段中输入有效 URL,我将被重定向到正确的 URL。但是,如果字符串为空,则它会向 /profile/:username 发布 GET …