2015-10-14 89 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?