我正在学习Node.js.这时,我正在使用ES6,Node和Express。我担心我的视图模型的范围。这时,我有以下内容:
server.js
// setup the routing
var routes = require('./routes');
app.use('/', routes.home);
路线正确注册。我在$ projectDir / routes / home.js中定义了我的路由。那个文件看起来像这样:
home.js
var router = require('express').Router();
/* GET the main page. */
router.get('/', function(req, res) {
var viewModel = require('../viewModels/home/index');
res.render('home/index', viewModel);
});
/* GET the contact page. */
router.get('/contact', function(req, res) {
var viewModel = require('../viewModels/home/contact');
res.render('home/contact', viewModel);
});
/* POST contact information */
router.post('/contact', function(req, res) {
// ?
});
这种方法很好用。我在$ projectDir / viewModels / home / index.js和$ projectDir / viewModels / home / contact.js中定义了我的视图模型。
index.js
var viewModel = {
title: '',
constructor() {
this.title = 'Welcome';
}
};
module.exports = viewModel;
contact.js
var viewModel = {
title: '',
emailAddress: '',
constructor() {
this.title = 'Contact Us';
}
};
module.exports = viewModel;
我对视图模型的范围有所顾虑。首先,我在两个单独的文件中使用module.exports = viewModel;
。这个可以吗?或者我应该将变量命名为indexViewModel
和contactViewModel
?此外,当发生POST时,如何使用用户在表单中输入的值来填充视图模型?例如他们的电子邮件地址?
答案 0 :(得分:0)
就节点而言,您可以在多个文件中使用相同的名称viewModel
。但是为了你自己的理智和清晰的思想,我建议你使用不同的名字。当你问这个问题时,“如何填充视图模型?”,我不得不回过头来阅读代码几秒钟,看看你的意思模型。当你的程序从40行增加到4000行时,如果它们都具有相同的名称,将很难保持模型的直线。
对于POST数据,您可以使用req.body属性访问POST数据。此问题已在此处得到解答:How do you extract POST data in Node.js?