我正在尝试将Embedded Javascript渲染器用于节点.我使用npm安装它,如下所示:https://github.com/visionmedia/ejs
我有以下代码,但它似乎不起作用:
var connect = require('connect'),
ejs = require('ejs');
var server = connect.createServer(
connect.bodyDecoder(),
connect.methodOverride(),
connect.staticProvider(__dirname + '/public'),
function(req,res) {
ejs.render('hi');
}
);
server.listen(9000);
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢.
我只想尝试使用node.js/express/ejs进行设置.我知道ejs不是真正的HTML,所以我很难显示一个简单的图像.有人能指出我正确的方向吗?
目录结构是:
现在我有
// index.ejs
<img src = "../logo.jpg" />
Run Code Online (Sandbox Code Playgroud)
我是以错误的方式来做这件事的吗?谢谢.
我正在尝试使用express.js构建一个Web应用程序.在我的应用程序中,我使用nodemailer发送邮件.如果我只是用它来发送基本邮件就可以了; 但是,当我尝试使用nodemailer发送呈现的ejs文件时,收件人只会收到一封空邮件.所以在这里我的代码的细节:
var transporter = nodemailer.createTransport({
host: 'smtp.zoho.com',
port: 465,
secure: true, // use SSL
auth: {
user: 'testmail@zoho.com',
pass: '123456'
}
});
fs.readFile('/test.ejs', 'utf8', function (err, data) {
if (err) {
return console.log(err);
}
var mainOptions = {
from: '"Tester" testmail@zoho.com',
to: email,
subject: 'Hello, world'
html: ejs.render(data, {name: 'Stranger'});
};
console.log(mainOptions.html);
});
transporter.sendMail(mainOptions, function (err, info) {
if (err) {
console.log(err);
} else {
console.log('Message sent: ' + info.response);
}
});
Run Code Online (Sandbox Code Playgroud)
这里的test.ejs(也就是结果console.log(mainOptions.html)很好,因为它正确地打印出渲染的ejs文件的字符串(<%= name%>替换为'Stranger')
<style type="text/css">
.header {
background: …Run Code Online (Sandbox Code Playgroud) 我在ejs文件中有这个代码.
<table>
<% for(var i=0; i < data.length; i++) { %>
<tr>
<td><%= data[i].id %></td>
<td><%= data[i].name %></td>
</tr>
<% } %>
</table>
Run Code Online (Sandbox Code Playgroud)
当我这样评论时,
<!-- <table> -->
<!-- <% for(var i=0; i < data.length; i++) { %> -->
<!-- <tr> -->
<!-- <td><%= data[i].id %></td> -->
<!-- <td><%= data[i].name %></td> -->
<!-- </tr> -->
<!-- <% } %> -->
<!-- </table> -->
Run Code Online (Sandbox Code Playgroud)
第2行我仍然有错误.这是错误的堆栈
ReferenceError: c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\views\x.ejs:2
1| <!-- <table> -->
>> 2| <!-- <% for(var i=0; i < data.length; i++) { …Run Code Online (Sandbox Code Playgroud) 我有一个简单的对象文字,其地址如下所示
address: {
country: String,
state: String,
city: String,
zip: String,
street: String
}
Run Code Online (Sandbox Code Playgroud)
它的内部是一个我用express.js渲染函数传递的对象.
在我的模板页面中,我正在尝试在此对象内循环,如下所示:
<% for (var prop in artist.address ) { %>
<%- artist.address[prop] %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
它输出数据但包含ejs函数,如下所示:
function () { return this.get(path); } function () { return this.get(path); } yafo 09988 jerusalem israel israeli [object Object] undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined [object Object] [object Object] function () { var self = this , hookArgs // arguments …Run Code Online (Sandbox Code Playgroud) 我不希望它是layout.ejs.
我想将我的布局设置为此特定控制器的另一个模板.
这是我想要的但可能不会有:
使用node.js和express以及ejs,我想在我的客户端目录中编写常规HTML文件时,服务器端包含HTML模板块.如果我可以将变量传递给HTML文档中的include,那也很酷.
Sooo之类的东西:
<!doctype html>
<html>
<head>
<%include head, ({title: "Main Page"}) %>
</head>
<body>
<% include header, ({pageName: "Home", color: "red"}) %>
...
<<% include footer%>>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
节点世界中有没有像这样工作的东西?或者任何接近但可能适合此功能的东西?我不会完全按照这里指出的方式使用它,但这是我正在寻找的功能.
我已经看过玉,车把,灰烬和ejs,而且ejs似乎最接近.也许其中一个已经这样做了,但我只是对实现感到困惑.
任何建议都会很棒!
我试图基于URL参数创建一个ejs条件,例如,如果测试参数存在于localhost:3000/page?test,那么显示一个div,否则不显示它.
我的ejs模板看起来像:
<% include header %>
<div class="row">
<%if (title !== "homepage") {%>
<%= title %>
<div>
<% include nav %>
</div>
<%}%>
<div>
</div>
</div>
<% include footer %>
Run Code Online (Sandbox Code Playgroud)
有没有办法直接从ejs文件访问URL参数?例如,<%= title%>工作正常,是否有类似<%= req.query%>的东西?
我也在使用快递.
我对sailsjs和nodejs很新.我正在尝试创建一个身份验证页面,其中一旦用户通过身份验证,我想设置
req.session.user = user.id
req.session.authenticated = true
Run Code Online (Sandbox Code Playgroud)
然后我需要在我的主layout.ejs文件中访问这些值.我这样做是通过使用
res.locals.user = _.clone( req.session.user )
Run Code Online (Sandbox Code Playgroud)
但是,我注意到必须在每个控制器的每个函数中调用此克隆方法,以便允许我从视图中访问用户.是否有更好的方法在sailsjs globbaly中访问会话变量,而无需在每个控制器中克隆req.session.我可以在这里找到我正在做的一个例子:
如您所见,我在控制器内的各种函数的开头调用了clone方法.
所以我试图使用request模块/包将我从http调用使用的对象数组循环到我的内部API .到目前为止,我能够从API中获取数据并在我的页面上显示完整对象.我想在我的页面上显示它并使用EJS模板系统循环它.我知道我可以使用AngularJS作为前端的东西,但我想看看我能在多大程度上只用服务器端.
以下是我的代码:
server.js
// Prepend /api to my apiRoutes
app.use('/api', require('./app/api'));
Run Code Online (Sandbox Code Playgroud)
api.js
var Report = require('./models/report');
var express = require('express');
var apiRoutes = express.Router();
apiRoutes.route('/reports', isLoggedIn)
.get(function (req, res,next) {
// use mongoose to get all reports in the database
Report.find(function (err, reports) {
// if there is an error retrieving, send the error.
// nothing after res.send(err) will execute
if (err)
return res.send(err);
res.json(reports);
});
});
Run Code Online (Sandbox Code Playgroud)
routes.js
var User = require('./models/user');
var request = require('request');
module.exports …Run Code Online (Sandbox Code Playgroud) ejs ×10
node.js ×10
express ×7
javascript ×3
ajax ×1
for-loop ×1
include ×1
layout ×1
nodemailer ×1
requestjs ×1
sails.js ×1
templating ×1