2016-10-09 2 views
0

Будучи довольно новым для NodeJS Интересно, какой был бы лучший подход для следующей «проблемы».Как загрузить объект или модуль на основе переменной

Мое основное приложение принимает переменные, включая device_type и payload. Способ, которым этот payload необходимо расшифровать, зависит от device_type.

Во избежание использования большого корпуса/переключателя или if-clause и возможности просто опустить новое устройство, если это необходимо; Я ищу более объектно-ориентированный подход.

В PHP я бы создал класс для каждого устройства и «загрузил» их соответственно из правильного пространства имен с помощью декоратора. Каждый класс будет иметь метод decrypt() (принудительно с использованием контракта)

Как бы я мог выполнить одну и ту же структуру в nodejs?

ответ

1

Ну, как вы сами предлагаете, вы можете написать их как модули, а затем включить их в зависимости от типа устройства, которое вы упомянули.

Предполагая, что вы создали свои модули и поместить их в соответствующий каталог

var decryptors = { 
    device_type_1: 'decryptor_module_1', 
    device_type_2: 'decryptor_module_2', 
}; 

var decryptor = require(decryptors[input.device_type]); 
+0

полностью забыли модуль требуемого требуют() не имеет «class'name. Ссылка на имя - это имя файла. – stUrb

+0

Кроме того, вы можете избежать сопоставления с помощью свойства 'decryptor' (или другого) в объекте устройства, которое вернет имя дешифратора, который должен быть загружен, или даже самого объекта. –

+0

Но тогда вы должны сначала загрузить все возможные устройства и прокрутить их, чтобы найти правильное свойство «decryptor». Звучит неэффективно, или я что-то пропустил? – stUrb

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