2016-11-20 9 views
0

質問は単純な方法で変数を他のjsファイルに渡す方法です(module.exportsだけのルートはありません)。nodejs module - express module.export - 変数を他のファイルに渡す方法は?

私のファイル構造は、この(非常にシンプルな人気のある構造)のようになります。

ROUTES (folder) 
--form.js 
--test.js 

VIEWS (folder) 
--form.ejs 
--test.ejs 

index.js 
package.json 

index.jsファイル(標準特急アプリファイル):

var express = require('express'); 
var body_parser = require('body-parser'); 

var form = require('./routes/form.js'); 
var test = require('./routes/test.js'); 

var app = express(); 
app.set('view engine', 'ejs'); 
app.use(body_parser.urlencoded({extended:true})); 

app.use('/', form); 
app.use('/test', test); 

var port = 3700; 
var server_listen_on = app.listen(port, function() 
{ 
    console.log('Server is listening on port: ' + port); 
}); 

form.jsファイル:

var express = require('express'); 
var body_parser = require('body-parser'); 
var router = express.Router(); 

var preciousData = 'var precious_data - from form.js file'; 

module.exports = 
{ 
    exportsPreciousData : preciousData, 
    router : router 
}; 

test.jsファイル:

ファイルwelcome.ejs
var express = require('express'); 
var request = require('request'); 
var router = express.Router(); 

var requireFormjs = require('./form.js');//({exportsPreciousData : exportsPreciousData}); 


//console.log(requireFormjs.exportsPreciousData); // I guess console.log is faster then module.exports... but 

router.get('/', function(req, res, next) 
{ 
    res.render('welcome', {test : requireFormjs.exportsPreciousData}); 
}); 

// why this doesn't work - I need to use middleware function - could you provide simple working example? 
//(I guessing that even if console.log print data after module.exports machinery I would still need middleware, right?) 

module.exports = router; 

:(速達すべてが正常に動作せず)

<!DOCTYPE html> 
<html> 
<head> 
<title>welcome</title> 

</head> 
<body> 

<%= test %> 

</body> 
</html> 

...なぜそれが動作しないのですか?

答えて

0

シンプルなものを他のファイルが関数を返します

Test.js:

module.exports = function(preciousData) { 
    // do everything here 
    return router; 
} 

index.js:

var test = require('test.js')(preciousData); 

データはtest.jsリターンという関数を呼び出すことによって渡され、ルータはその関数から返されます

+0

ok、働いて、ありがとう! – webmasternewbie

関連する問題