2015-10-14 97 views
1

我正在学习Node.js.目前,我正在使用ES6,Node和Express。我很关心我的观点模型的范围。在这个时候,我有以下几点:在Node.js App中使用查看模型

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;。这个可以吗?或者我应该将变量命名为indexViewModelcontactViewModel?另外,POST发生时,如何填充使用视图模型和用户输入表单的值?例如他们的电子邮件地址?

回答

0

就节点而言,您可以在多个文件中使用相同名称viewModel。但为了您自己的理智和清晰的想法,我建议您使用不同的名称,正如您所建议的那样。当你问这个问题时,“我该如何填充视图模型?”,我不得不回过头来仔细阅读代码几秒钟,看看你的视图模型是什么意思。当你的程序从40行增加到4000行时,如果它们都具有相同的名称,保持模型的直线化将会变得非常困难。

至于POST数据,您可以使用req.body属性访问POST数据。此问题已在此处得到解答:How do you extract POST data in Node.js?