gpt4 book ai didi

javascript - Node.js 将变量显示为 HTML

转载 作者:行者123 更新时间:2023-11-30 00:30:57 26 4
gpt4 key购买 nike

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

我目前在使用 Express 的 app.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"
}

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

在 Handlebars 内,我只是简单地看看我是否能看到呈现的值,但我无法看到。

计算.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 docs .如果没有更多代码(特别是您如何设置 View 引擎),就不可能完全推断出您的问题,但我们至少可以确定您发布的代码中的问题。

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

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

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

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

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

关于javascript - Node.js 将变量显示为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29505088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com