节点js:一起使用Handlebars和Bodyparser

时间:2015-08-21 15:14:33

标签: javascript node.js express

在这个基本程序中,我想使用' body parser'来获取用户输入。然后通过把手将该输入输入索引页面。我已多次尝试但似乎无法实现它。车把和车身拆卸车也在一起,或者我应该使用不同的东西。

模板:

<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <header>
            <h1>Bodyparser and Handlebars</h1>
        </header>
    <form method="post" action="/">
            <input type="text" name="name1">
            <input type="submit" value="Submit">
    </form>
                  {{test}}
    </body>   
</html>

Node.js的

var express = require('express');
var app = express();
var handlebars  = require('express-handlebars');
var path = require("path"); 
var bodyParser = require('body-parser');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

app.set('view engine', 'html');
app.engine('html', handlebars({
  defaultLayout: 'base',
  extname: '.html'
}));

app.use(express.static(path.join(__dirname, 'public'))); //public directory

app.get('/index', function(req, res) {
res.sendFile('index.html', { root: __dirname });
});

app.get('/', function (req, res) {
    res.render('index', {
    test: req.body.name1});
});

app.post('/', function(req, res){
    console.log(req.body.name1);
});

app.listen(3000);

2 个答案:

答案 0 :(得分:0)

您在/的帖子应为:

app.post('/', function(req, res){
    res.render('index', {
    test: req.body.name1});
});

你已经完成了。

答案 1 :(得分:0)

身体解析器和把手可以完美地工作。 Body-parser允许您在路由器控制器内收集请求数据,而Handlebars是一个模板引擎,可以呈现变量和更多内容。

您需要将要显示的文本传递给POST路由器控制器。

<form action="/" method="post">
  name1: <input type="text" name="name1"><br>
  <input type="submit" value="Submit">
</form>

将该表格放在其他视图或任何您想要的地方

在控制器内部将请求参数传递给把手:

app.post('/', function(req, res){
  res.render('index', {
  test: req.body.name1});
});