2012-01-25 13 views
1

私は(Node.jsのとrequire.jsで)サーバ側のJSについて を話している私は三つのファイルrequire( 'some_module.js')を使用してスクリプトを実行する - 良い方法ですか?

//1) app.js - main entry point: 
//======================================================= 
var myservice = require('./myservice'); 

rt.register('someKey', require('./XYZhandler').handler); 

//2) myservice.js: 
//======================================================= 
var handlers = {}; 

exports.register = function(key, handler) { 
    handlers[key] = handler; 
}; 

//3) and finally XYZhandler.js: 
//======================================================= 
exports.handler = function() { 
    //...do something 
}; 

を持って、上記の設定では、私は実際にapp.jsに明示的に実行されるすべてのスクリプトを持っている

私が持っていた代替されました:この後者のセットアップで

//1) app.js - main entry point: 
//======================================================= 
var myservice = require('./myservice'), 
    rt = require('./XYZhandler'); 

//2) myservice.js: unchanged from above 

//3)and finally XYZhandler.js: 
//======================================================= 
require('./myservice').register(function() { 
    //...do that same thing 
}; 

、私は(XYZhandler.jsは何もエクスポートしないことに注意してください)実際に遭遇requirejs初めて実行されますXYZhandler.jsでスクリプトを持っています。私(Java開発者として)はstatic initializersにこれを似ています。しかし、上記のうちどれがより良い方法と考えられていますか?ありがとう。

+0

私は最初のものをやります... – jcolebrand

答えて

1

最初のアプローチは、適切に分離されている方が良いです。

XYZhandler.jsは、myservice.jsに依存します。 yourhandler.jsまたはhishandler.jsregisterXYZhandler.jsになる場合は、それらもハードコードされている必要があります。まもなく、すべてのモジュールは互いに依存し、それらを個別に再利用する能力はありません。これらの関数を最初にモジュールに抽象化します。

それは化粧品の違いだが、私はおそらくあなたの最初の例をこのように記述します:ワンステップで

//1) app.js - main entry point: 
//======================================================= 
var myservice = require('./myservice'); 
var myhandler = require('./XYZhandler').handler; 

rt.register('someKey', myhandler); 

ロード・モジュール、そしてそれらを初期化することは、私は彼らの関係を明確にするのに役立ちます。

希望に役立ちます!

関連する問題