Javascript Node.js:从其他文件调用代码

Javascript Node.js:从其他文件调用代码,javascript,node.js,coffeescript,Javascript,Node.js,Coffeescript,我的主文件中有很多模式,我想将它们删除到另一个文件中 我该怎么做 例如: EntrySchema = new Schema aa : String record : String status : String CreditSchema = new Schema credit : Number minute : Number date : Date #belongs_to subdomain 使用预定义的导出对象。以下内容适用于.c

我的主文件中有很多模式,我想将它们删除到另一个文件中

我该怎么做

例如:

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

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

使用预定义的导出对象。以下内容适用于
.coffee
.js
文件:

将以下内容放入模式中。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
s成为id为
/schemas
的模块的
导出
对象
/schemas.coffee
也可以,但不建议这样做,因为以后您可以将
schemas.coffee
重构为
schemas.js
或 <代码>模式/<代码>子文件夹,甚至到C++中实现的DLL。 一种常见做法是对模块名称和导出对象的引用使用相同的名称:

var schemas = require('./schemas')
另一种常见做法是对每次导出都使用
foo
exports.foo

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
因此,您仍然可以在
schemas.coffee
中使用较短的
EntrySchema
名称,而不必在
schemas.coffee中的任何地方使用
exports.EntrySchema

这两种做法都很方便,但既不需要也不强制执行


这个导出工具是CommonJS模块规范的一个实现。有关标准和Node.JS中的具体实现,请参见,直到有这样一个嵌入文档:exports.AccountSchema=new Schema phone:String users:[UserSchema]custones:[custoneschema]credit:NumberIt返回:ReferenceError:UserSchema未定义修改答案。另一种解决方案是只导出顶层架构。