2012-09-18 14 views
8

.jsファイルにjavascriptオブジェクトが含まれているとします。私は同じディレクトリにある別の.jsファイルからそのオブジェクトとそのすべての機能にアクセスできるようにしたい。このオブジェクトをmodule.exportsオブジェクトとrequire()オブジェクトを別の.jsファイルにエクスポートするだけでいいですか?可能であれば、私に例を挙げてください。エクスポートオブジェクトを使用したオブジェクトのエクスポート

もし私がノードを使って開発しているなら、助けてください。ファイルを1つ

答えて

12

これは私がモジュールを作成する方法です。

myModule.js

var MyObject = function() { 

    // This is private because it is not being return 
    var _privateFunction = function(param1, param2) { 
     ... 
     return; 
    } 

    var function1 = function(param1, callback) { 
     ... 
     callback(err, results);  
    } 

    var function2 = function(param1, param2, callback) { 
     ... 
     callback(err, results);  
    } 

    return { 
     function1: function1 
     ,function2: function2 
    } 
}(); 

module.exports = MyObject; 

そして、あなたは、単にrequireを使用し、通常どおりオブジェクトを使用することができ、別のJSファイルにこのモジュールを使用します:

someFile.js

var myObject = require('myModule'); 

myObject.function1(param1, function(err, result) { 
    ... 
}); 
+0

ノード内でオブジェクト定義の最後に関数を返さないと、私は(プライベート)関数にアクセスできなくなりますか?モジュールを必要としても? –

+0

正しいです、あなたはオブジェクトを介してアクセスすることはできません。 'myObject._privateFunction(p1、p2)'はエラーを返します 'TypeError:Object#にはメソッド '_privateFunction''がありません – c0deNinja

2

module.exports.myObj = some object...; 

他に:エクスポートオブジェクトに入れない限り、ノード上のjsファイル内

Obj = require('myFile.js').myObj; 

すべては、そのファイルに対してローカルです。これは実際にブラウザのJavaScriptとは大きく異なります。ブラウザでは、インポートされるすべてのファイルが1つの大きなファイルのように一緒に動作します。

ノードファイルは、モジュールオブジェクトを作成し、コードを取り巻く関数に渡すように考えることができます。

module = { 'exports' : {} }; 
(function(module){ 
    //your js file 
    ... 
})(module) 
2

もちろん可能です。私の例では、私は設定情報を保持するためにobjを使います。私はindex.jsというファイルにconfigというフォルダに入れました。これにより、import 'config'のときにインデックスを選択することを推奨します。私は2つの輸出ここで私のノードとAPIのものと私のDBの他のものがあります。私は環境を設定する最初のビットを無視することができます。

const environment = { 
    development: { 
    isProduction: false 
    }, 
    production: { 
    isProduction: true 
    } 
}[ process.env.NODE_ENV || 'development' ]; 

export default Object.assign({ 
    host: 'localhost', 
    port: '3000', 
    remoteApi: { 
    token: { 
     'X-Token': '222222222222222222' 
    }, 
    base: 'https://www.somedomain.com/api' 
    } 
}, environment); 

export const db = { 
    dbHost: 'localhost', 
    dbPort: 176178 
}; 

import config from '../config';を呼び出すと、デフォルトのものが選択されます。私が指定した場合、私はdbのエクスポートを得ることができますimport { db } from '../config';

関連する問題