2011-11-13 9 views
0

メインファイルに別のファイルに削除したいスキーマがたくさんあります。Node.js:他のファイルの呼び出しコード

どうすればいいですか?例えば

EntrySchema = new Schema 
    aa : String 
    record : String 
    status : String 

CreditSchema = new Schema 
    credit : Number 
    minute : Number 
    date : Date 
    #belongs_to subdomain 

答えて

2

事前定義されたexportsオブジェクトを使用します。以下は、両方の.coffee.jsファイルに適用されます。

schemas.coffeeに次を置き:

exports.EntrySchema = new Schema 
    aa : String 
    record : String 
    status : String 

exports.CreditSchema = new Schema 
    credit : Number 
    minute : Number 
    date : Date 
    #belongs_to subdomain 

次に、あなたが行うことができますmain.jsに:

var s = require('./schemas') 
var foo = s.CreditSchema 

のモジュールのexports対象となりidは./schemasです。 ./schemas.coffeeも動作しますが、後でrefactor schemas.coffeeschemas.jsまたは サブフォルダ、またはC++で実装されたDLLにも推奨されません。

一般的な方法は、モジュール名に同じ名前を使用することで、参照がオブジェクトをエクスポートするために:

EntrySchema = exports.EntrySchema = new Schema 
    aa : String 
    record : String 
    status : String 

CreditSchema = exports.CreditSchema = new Schema 
    credit : Number 
    minute : Number 
    date : Date 
    #belongs_to subdomain 

var schemas = require('./schemas') 

もう一つの一般的な方法は、すべての輸出用の両方fooexports.fooを持つことです

schemas.coffeeの中ではより短いEntrySchemaの名前を使用することができ、exports.EntrySchemaのどこでもschemas.coffeeの範囲内に入る必要はありません。

両方のプラクティスは便利ですが、必須でも強制もしません。

このexportsは、CommonJSモジュール仕様の実装です。 Node.jsの中の特定の実装のための標準についてhttp://www.commonjs.org/specs/modules/1.0/、およびhttp://nodejs.org/docs/latest/api/modules.htmlを参照してください

+0

次のように埋め込まれた文書がありますまで、それが正常に動作します:\t exports.AccountSchema =新しいスキーマ \t電話:文字列 \tユーザーは:[UserSchema] \t custphones:[CustphoneSchema] \tクレジット:番号 – donald

+0

返されるもの:ReferenceError:UserSchemaが定義されていません – donald

+0

答えを変更しました。別の解決策は、トップスキーマのみをエクスポートすることです。 – nponeccop

関連する問題