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
  

Ответ №1:

Используйте заранее определенный 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
  

s становится exports объектом модуля с идентификатором ./schemas . ./schemas.coffee тоже будет работать, но это не рекомендуется, так как позже вы могли бы провести рефакторинг schemas.coffee на schemas.js или
schemas/ во вложенную папку или даже в DLL, реализованную на C .

Обычной практикой является использование одного и того же имени для имен модулей и для ссылок на объект экспорта:

 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
  

Таким образом, вы все еще можете использовать более короткие EntrySchema имена внутри schemas.coffee и не должны прибегать к exports.EntrySchema везде внутри schemas.coffee .

Оба метода удобны, но не являются ни обязательными, ни принудительными.

Это exports средство является реализацией спецификации модулей CommonJS. Смотрите http://www.commonjs.org/specs/modules/1.0 / для стандарта и http://nodejs.org/docs/latest/api/modules.html для конкретной реализации в Node.JS

Комментарии:

1. это работает нормально, пока не появится встроенный документ, подобный этому: exports. Схема учетных записей = новая схема телефон : Строка пользователи: [UserSchema] пользовательские телефоны: [CustphoneSchema] кредит : Номер

2. Он возвращает: ReferenceError: схема пользователя не определена

3. Изменен ответ. Другим решением является экспорт только верхней схемы.