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。 您不会将v3
variables传递给该对象,因此您的模板无法输出。
其次,你已经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
这个v3
variables,它不写入res
对象,这是将被发送到浏览器的响应。
解决这些问题应该让你走上正路。