2016-05-27 5 views
1

私はファイルの最後にルータをエクスポートしていますが、関数をエクスポートしていますが、それらのうちの1つを一度に動かすことしかできません。あなただけのこの操作を行うことができない理由Node.jsはルータと関数の両方をエクスポートします

//app.js 
var express = require('express'); 
var app = express(); 

var weather = require('./routes/weather.js'); 

app.use(weather) // I want to be able to use this for routing 
weather.refresh(); // But also be able to call refresh function of weather.js 

答えて

5

いかなる理由:私は両方を行うことができるようにしたい私のメインapp.jsから

// weather.js 
var express = require('express'); 
var router = express.Router(); 

refreshWeather(){ 
// Refresh weather... 
} 

exports = router; // It's either this 
exports.refresh = function() { // or this. 
    refreshWeather(); 
    console.log('Done refreshing'); 
}; 

?これは、エクスポート内で関数を定義し、weather.js内の別の関数を呼び出すよりもきれいです。

app.js

var weather = require('./routes/weather.js'); 
app.use(weather.router) 
weather.refreshWeather() 

で次に

module.exports = { 
    router:router, 
    refreshWeather:refreshWeather 
} 

あなたは=ルータをexports.routerにルータ=輸出を変更してみてください、そのようにしたくない場合。その後、app.js内でweather.routerを呼び出すことができます。

関連する問題