节点.js将变量显示为 HTML

Node.js display variable as HTML

本文关键字:HTML 显示 变量 js 节点      更新时间:2023-09-26

我正在努力尝试将Node.js变量显示为HTML。

我目前在我的应用程序中有这个.js它使用快递。

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"
  }

应用.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);
});

在车把中,我只是简单地查看我是否可以看到呈现的值,但我无法看到。

计算 HBS <h2><%= v3 %></h2>{{v3}}什么都不显示。

我错过了什么?

工作片段

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);
});

您有很多问题,确实需要阅读Express文档。如果没有更多代码(特别是您如何设置视图引擎(,就不可能完全推断出您的问题,但我们至少可以识别您发布的代码中的问题。

首先,也是最重要的,res.render的第二个参数是一个"locals"对象,它定义了你可以在模板中使用的变量。您没有将 v3 变量传递到该对象中,因此您的模板无法输出它。

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

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

第四,您尝试console.log v3 变量,该变量不会写入 res 对象,这是将发送到浏览器的响应。

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