2016-04-29 3 views
0

В моем проекте узла я использую эту базовую структуру шаблона для одного модуляВозможная структура для модуля Node

(function() { 

    var SimpleModule; 
    SimpleModule = (function() { 

    function SimpleModule(params) { 

     /** private function */ 
     this.aPrivateFunction = function() { 
     return "hidden"; 
     }; 

    } 

    /** public function */ 
    SimpleModule.prototype.foo = function() { 
     return "bar"; 
    } 

    return SimpleModule; 

    })(); 

    module.exports = SimpleModule; 

}).call(this); 

так, что модуль вызывающего абонента будет делать

var SimpleModule 
,simpleModuleInstance; 

SimpleModule = require('./simplemodule'); 
simpleModuleInstance = new SimpleModule(); 
simpleModuleInstance.foo(); 

Является ли это подход формально правильный в Node?

+1

Что такое 'MyModule'? – Nonemoticoner

+1

Формально - правильно, но почему так сложно? –

+0

@Nonemoticoner опечатка исправлена. – loretoparisi

ответ

3

Как насчет более простого подхода? Модули являются закрытыми по умолчанию, поэтому все уже инкапсулировано, за исключением того, что вы экспортируете.

function SimpleModule(params) { 
    /* Not really private!! */ 
    this.aPrivateFunction = function() { 
    return "hidden"; 
    }; 
} 

/** public function */ 
SimpleModule.prototype.foo = function() { 
    return "bar"; 
} 

module.exports = SimpleModule; 
+1

@NestorBritez Не совсем. Если вы собираетесь написать 'var instance = new SimpleModule()', в итоге вы получите 'aPrivateFunction'. Чтобы получить 'aPrivateFunction' как статический метод, вам придется привязать его непосредственно к функции-конструктору:' SimpleModule.aPrivateFunction = function() ... ' – Bashar

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

  • Нет связанных вопросов^_^