[英]Node.JS: Create new pages with Express
I am trying to find a way to create a new page dynamically on Node.JS with Express when a user submits a form. 我试图找到一种方法来在用户提交表单时使用Express在Node.JS上动态创建新页面。 Here is my idea, but it doesn't work: 这是我的想法,但它不起作用:
var app = require('express')();
var server= require('http').createServer(app);
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });
function Page(name){ //Create a page prototype
//Some variables and methods specific to the page
app.get('/'+name, function (req, res) {
res.render('index.ejs', {someVars: someVars});
});
}
//When a user submits a form, create a new page
app.post('/submit', urlencodedParser, function(req, res){
var nom = req.body.nom;
var newPage = new Page(nom);
res.redirect('http://myDomain/' + nom);
});
What is the best way to do it? 最好的方法是什么?
You need to add ejs
as view engine and make sure you have created index.ejs
and then add a get route for dynamic page as following 您需要将ejs
添加为视图引擎,并确保已创建index.ejs
,然后为动态页面添加get路由,如下所示
var app = require('express')();
var server= require('http').createServer(app);
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });
// set the view engine to ejs
app.set('view engine', 'ejs');
app.get("/:pageName", function (req, res) {
var pageName = req.params.pageName;
res.render('index.ejs', {someVars: someVars});
});
//When a user submits a form, create a new page
app.post('/submit', urlencodedParser, function(req, res){
var nom = req.body.nom;
res.redirect('http://myDomain/' + nom);
});
I hope this will help you 我希望这能帮到您
You could save names of created pages in database and set optional parameter in express: 您可以在数据库中保存已创建页面的名称,并在express中设置可选参数:
//When a user submits a form, create a new page
app.post('/submit', urlencodedParser, function(req, res){
var nom = req.body.nom;
/* save nom to database */
res.redirect('http://myDomain/' + nom);
});
app.get('/:nom', function(req, res){
/* if nom exists in database -> return ejs template with vars */
/* else return 404 */
});
You should store it in database to prevent having pages that doesn't exist. 您应该将其存储在数据库中以防止页面不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.