Node.js显示variables为HTML

我正在努力尝试显示一个Node.jsvariables为HTML。

我目前有这在我的app.js使用Express。

的package.json

"dependencies": { "body-parser": "~1.12.0", "cookie-parser": "~1.3.4", "debug": "~2.1.1", "express": "~4.12.2", "ejs": "~2.1.3", "hbs": "~2.9.0", "morgan": "~1.5.1", "serve-favicon": "~2.2.0" } 

App.js

 var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hbs'); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); app.post('/calc', function(req, res) { res.render('calc', { title: 'Calc'}); var v3 = (req.body.value1 * req.body.value2); console.log(v3); }); 

在把手内,我只是简单地看看能否看到渲染的价值,但是我无法做到。

calc.hbs <h2><%= v3 %></h2>{{v3}}显示任何内容。

我错过了什么?

工作SNIPPET

 app.post('/calc', function(req, res) { var v3 = (req.body.value1 * req.body.value2); res.render('calc', { title: 'Calc', v3: v3}); //Pass the local variables into objects to render console.log(v3); }); 

你有很多问题,真的需要阅读快速文档 。 如果没有更多的代码(特别是如何设置视图引擎),不可能完全推导出您的问题,但我们至less可以确定您发布的代码中存在的问题。

首先,最重要的是, res.render的第二个参数是一个“本地”对象,它定义了可以在模板中使用的variables。 您不会将v3variables传递给该对象,因此您的模板无法输出。

其次,你已经build立了一个POST路线。 如果您只是在浏览器中访问/calc ,则此路由永远不会执行,因为访问页面是GET请求。 它看起来像你打算POST因为你正在使用req.body ,但值得一提的是,如果你从其他地方复制这些代码。

第三,你已经传递了一个模板名称res.render没有扩展名。 这意味着您必须指定Express的默认view engine来加载此模板。 您还没有显示这部分代码,所以请查看文档以设置view engine 。 默认情况下,Express会在模板views查找一个名为views的目录,因此请确保您的模板位于/views/calc.hbs并将您的view engine设置为Handlebars(需要设置view engine并调用app.engine来注册Handlebars )。

第四,你正在试图console.log这个v3variables,它不写入res对象,这是将被发送到浏览器的响应。

解决这些问题应该让你走上正路。