2015-08-23 2 views
0

У меня есть модуль, который использует синтаксический анализ (функция синтаксического анализа), другие модули должны запрашивать эти значения парсера. Мой вопрос:Как выставить объект в модуле узла

  1. Как его построить (аспекты дизайна)?
  2. , какой метод должен инициализировать (первый метод, который называет его , чтобы получить конкретное значение) анализатор

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

делает этот модуль синтаксического анализа

parse = function (data) { 
     var ymlObj = ymlParser.parse(data); 
     return { 
      web: ymlObj.process_types.web, 
      con: ymlObj.con  

     } 

}; 

ответ

1

Если я понял, вы правы, вы можете просто сделать простой модуль с добытчиками и сеттер.

(parse.js)

var ymlObj = {}; 

function Parse() {} 

Parse.prototype.setData = function (data) { 
    ymlObj = data; 
} 

Parse.prototype.getWeb = function() { 
    return ymlObj.process_types.web; 
} 

Parse.prototype.getCon = function() { 
    return ymlObj.con; 
} 

module.exports = new Parse(); 

(parseUser.js)

var parse = require('./parse.js'); 

function ParseUser() { } 

ParseUser.prototype.useParse = function() { 
    console.log(parse.getCon()); 
} 

module.exports = new ParseUser(); 

(app.js)

var parse = require('./parse.js'); 
var parseUser = require('parseUser.js'); 

parse.setData({ ... }); 
parseUser.useParse(); 

Вы все еще должны сделать основы как исключения ручки, но надеюсь, это поможет вам понять основную структуру.

Что происходит, чтобы начать, это действительно зависит от того, когда вы хотите инициализировать (извлекать?) Ваши данные и откуда берутся эти данные. Вы можете установить временную метку, чтобы указать, сколько лет ваши данные и принять решение, если вы все еще полагаетесь на нее или получаете новые данные. Или вы можете регистрировать обратные вызовы из своих пользовательских модулей, чтобы обрабатывать новые данные каждый раз, когда их извлекали.

Так что до вас, как вы разрабатываете свой модуль. ;)

+0

Спасибо 1+ Один вопрос, почему вы используете прототип, можете ли вы объяснить? –

+0

Thats, потому что в javascript каждый объявленный (новый) объект наследует от своего прототипа. Чтобы лучше понять это: http://www.w3schools.com/js/js_object_prototypes.asp – Sharko

Смежные вопросы