我正在编写一个nodejs应用程序,它将使用emailjs发送html电子邮件.基本上我提供html作为我附加到消息的变量发送.
我不想使用大量的字符串连接来构建这个变量,而是使用express/ejs渲染视图并将内容保存到变量中.
所以不要这样做:
messageHtml = '<html>'+ ....
message.attach({data: messageHtml, alternative: true});
Run Code Online (Sandbox Code Playgroud)
我想做点什么:
messageHtml = render('emailTemplate.ejs', viewArgs);
message.attach({data: messageHtml, alternative: true});
Run Code Online (Sandbox Code Playgroud)
可以这样做,如果是这样,怎么办?!
我正在使用带有Node.JS的EJS,并将JSON对象传递给它,但需要将其作为页面中的可用对象进行访问.我从这里得到了意外的令牌o错误:
var initData=JSON.parse(<%-JSON.stringify(list)%>);
Run Code Online (Sandbox Code Playgroud)
我不知道这里有什么不对.
这是渲染时文件中的样子:
var initData=JSON.parse([{"title":"South Hills Health System - University Health Center","adr":"200 Lothrop St,15213","coords":"40.441875,-79.960813","images":[],"tags":[],"_id":"51c0e9798384f40000000017"},{"title":"Bombay Food Market","adr":"4605 Centre Avenue, Pittsburgh, PA 15213, USA","coords":null,"images":[],"tags":["indian","groceries","ethnic","store"],"_id":"51c0519e02b7cbec73000002"}]);
Run Code Online (Sandbox Code Playgroud) 我Sails.js应用程序具有独立frontend和admin布局.我的视图引擎是ejs.
如何为前端和管理站点使用单独的布局?
我可以为每个动作使用特定布局吗?
我正在尝试使用ejs将数据从我的节点服务器传递到我的角度控制器,以便在控制器加载时可以使用它(对Angular或UI路由器不感兴趣,你可以解析它).
节点服务器(使用express):
app.get('/', function(req, res) {
res.render('index', {
names: ["Daniel", "Sarah", "Peter"]
});
});
Run Code Online (Sandbox Code Playgroud)
角度控制器:
.controller('NamesController', function ($scope) {
var info = <%= names %>;
});
Run Code Online (Sandbox Code Playgroud)
这样做会给我以下错误: Uncaught SyntaxError: Unexpected token <
如果无法做到这一点,我很想听听有关如何在我的页面上预加载数据的建议.
当我从我的快速路径发送一个包含对象数组的对象到我的客户端时,我得到一个[Object对象],然后当我尝试对它进行字符串化时,我得到这个带有此控制台消息的疯狂字符串
var messages = "<%=(JSON.stringify(messages))%>"
console.log(messages)
Run Code Online (Sandbox Code Playgroud)
将其打印到控制台......
{"messages":[{"content":"cool mane","creator":"joe"},{"content":"test 4","creator":"joe"},{"content":" ewgdqf","creator":"joe"},
Run Code Online (Sandbox Code Playgroud)
它应该是一些东西,所以我可以通过做消息[0] .content迭代它,但我得到这个疯狂的字符串,不会让我做任何事情...
如果我尝试遍历它,它只会打印出每个字符.
我正在尝试从文件中呈现EJS模板但我收到错误 this.templateText.replace is not a function
const http = require('http');
const fs = require('fs');
const ejs = require('ejs');
const server = http.createServer(function(req, res){
fs.readFile('index.ejs', function(err, data) {
if (err) {
res.end("Error");
}
res.end(ejs.render(data, { title: "Hello" }));
});
});
server.listen(4000);
Run Code Online (Sandbox Code Playgroud) 我正在使用ejs-locals来支持express/node.js中的partials
问题是当您在部分内包含部分时,库存在错误.第二部分包括尝试查找相对于祖父母的文件或调用第一部分的page.ejs.
所以这要求我要么缩小我的./views,所以所有文件都只在./views(没有子目录)......或者我对从初始部分调用的目录中的部分进行符号链接.
也许还有另一种/更好的方法吗?
在我的很多观点中,我有一个脸部混搭,它给了我与人的化身的HTML.我不能只使用<% include faces %>和称它为一天,因为人们的集合来自许多不同的对象,具体取决于调用它的页面.
这是一个例子:
在项目页面上,我打电话<% include stats %>,调用面部分
<- partial('faces', { people: item.users }) %>
Run Code Online (Sandbox Code Playgroud)
或者在列表页面上,我打电话<% include stats %>,调用面部分
<- partial('faces' { people: list.users }) %>
Run Code Online (Sandbox Code Playgroud)
部分'faces.ejs'只是循环遍历人并吐出指向其个人资料的链接.但是因为我不能在部分内部包含部分内容,所以无论是在整个地方进行sym链接还是尝试不同的东西.
./views/list/index.ejs调用一个调用faces.ejs partial的stats.ejs partial ...所以我需要将./views/list/faces.ejs符号链接到./views/stats/faces.ejs上班.
您无法将数据传递给简单包含,因此我无法传入不同的用户集合,具体取决于调用它的上下文.
<% include faces %> 需要face.ejs循环遍历在faces.ejs中硬编码的item.users或list.users
我还能做些什么,可以使用嵌套的partials/includes?我已经向ejs-locals提交了一个bug,还有一些其他人也有这个bug,但它已经过了一个月没有任何修复.
我遇到了一些麻烦,我目前正在尝试自学一些 NodeJS,但我陷入了困境。我正在尝试使用 Multer 上传文件,我已经完全正常工作,但我想在同一页面上显示上传文件的进度。因此,我使用进度流来显示它,我可以在控制台中完全打印它,但现在的问题是在上传文件的页面上显示它。
所以最后一个问题是:如何使用从变量“p”获得的输出来显示 upload.ejs 中的进度?
这是我目前的代码
用户.js
router.get('/upload', ensureAuthenticated, function(req, res){
res.render('authed/upload');
});
router.post('/upload-files', function(req, res){
var p = progress();
req.pipe(p);
p.headers = req.headers;
var sendStream = multer({ storage: storage }).any();
p.on('progress', function(progress){
console.log(progress);
})
console.log(req.files);
sendStream(p, res, function(){
console.log('file has been uploaded');
});
req.flash('success', 'File(s) have been uploaded!');
res.location('/upload');
res.redirect('/upload');
})
Run Code Online (Sandbox Code Playgroud)
上传.ejs
<% include ../partials/header %>
<% include ../partials/navbar %>
<div class="container">
<div class="row">
<div class="col-sm-12 file-upload-wrapper">
<%- messages() %>
<div class="w-100 text-center" style="padding-bottom: 2rem;">
<h2 id="fileupload-text">File …Run Code Online (Sandbox Code Playgroud) 我在我网站的个人资料页面上有这样的代码。
<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 …
我正在尝试使用 Node js 在我的网站上配置 webpack,我还使用 ejs 作为视图。我尝试了很多方法来处理我的 webpack 中的 ejs,但到目前为止我还没有成功。
const path = require('path')
const nodeExternals = require('webpack-node-externals')
module.exports = (env, argv) => {
return ({
entry: {
server: './src/app.js',
},
output: {
path: path.join(__dirname, 'dist'),
publicPath: '/',
filename: 'main.js'
},
mode: argv.mode,
target: 'node',
node: {
// Need this when working with express, otherwise the build fails
__dirname: true,
__filename: true,
},
externals: [nodeExternals()], // Need this to avoid error when working with Express
module: {
rules: [
{ …Run Code Online (Sandbox Code Playgroud)