2017-11-29 9 views
1

大きなapp.jsファイルがあり、コードを分割したい。私はリファクタリングNodeJs関数

module.exports = function(app){ 

app.get('/', function (req, res) { 
    res.redirect('/page1'); 
}); 

app.get('/page1', function (req, res) { 
    res.render('page1'); 
}); 

app.get('/page2/:id', function (req, res) { 
    res.render('page2', { 
     val: Number(req.params.id) 
    }); 
}); 

} 

routes.jsと呼ばれるモジュールにすべての私のルートを取って、私のapp.jsに私が

const routes = require('./Server/routes')(app); 

だから、これは正常に動作を呼び出します。

私は

function loadData(id, callback) { 
    fs.readFile('./database.json', 'utf8', function (err, data) { 
    var json = JSON.parse(data); 
    var arr = json.arr; 
    var obj = arr.find(e => e.id === Number(id)); 
    callback(obj); 
    }); 
} 

のようないくつかの機能を持っており、あまりにも別々のファイルにそれらを持っていると思います。これどうやってするの? 1つの関数をエクスポートできますが、複数の関数をどのようにエクスポートできますか?

module.exports = function(){ 

function sayHello(){ 
    console.log("Hello"); 
} 

function calc(){ 
    return 5 + 7; 
} 

} 

同様

はあなたにも

module.export = { 
    sayHello: function() { 
     console.log("Hello"); 
    }, 
    calc: function() { 
     return 5 + 7; 
    } 
} 

// usage: const mymodule = require('path/to/your/file'); 

エクスポートできるオブジェクトをエクスポートし、オブジェクトの内側に、あなたの関数を定義することができるモジュールを必要とし、あなたの新しいモジュールで

myModule.sayHello(); 

var num = myModule.calc(); 
+1

ここにあなたは行く(https://gist.github.com/oneturkmen/cf0cddeb80e10c415c8ab89d2c577293)。これがあなたが求めているものなのかどうか教えてください。 – oneturkmen

+0

私はそう思います、これは正しいですか? https://hastebin.com/unobutifem.js – peterHasemann

答えて

3

を呼び出します関数とプロトタイプで必要な関数を定義する

function mymodule(someArgsIfNeeded) { 
    // do some initialization 
} 

mymodule.prototype.sayHello = function() { 
    console.log("Hello"); 
} 
mymodule.prototype.calc = function() { 
    return 5 + 7; 
} 

module.export = mymodule 

// usage: const mymodule = require('path/to/your/file')(someArgsIfNeeded); 
+0

ああ、この構文は私にとっては新鮮です – peterHasemann

関連する問題