fboës - Der Blog

Node.js Pattern: Das Modul

Nach mehrmonatigen Experimentieren habe ich für mich endlich das gelungene Pattern gefunden, mit dem ich in Node.js meine Module baue.

// module-name.js

'use strict';

var someNodeModule = require('some-node-module');
var someOwnModule  = require('./some-own-module');

/**
 * [modulName description]
 * @constructor
 */
var modulName = function (config) {
  var external = {};
  var internal = {};

  /**
   * [someVariable description]
   * @type {[type]}
   */
  external.someVariable = null;

  /**
   * [someOtherVariable description]
   * @type {[type]}
   */
  internal.someOtherVariable = null;

  /**
   * [someFunction description]
   * @params {[type]} [name] [description]
   * @return {[type]} [description]
   */
  external.someFunction = function () {
  };

  /**
   * [someOtherFunction description]
   * @params {[type]} [name] [description]
   * @return {[type]} [description]
   */
  internal.someOtherFunction = function () {
  };

  return external;
};

module.exports = modulName;

Der Aufruf ist dann ganz einfach:


var moduleName  = require('./moduleName');

moduleName({});

Eine Erweiterung des Objekts um neue Eigenschaften geht ebenfalls flott von der Hand:

// some-other-module-name.js

'use strict';

var moduleName  = require('./moduleName');

/**
 * [someOtherModuleName description]
 * @constructor
 */
var someOtherModuleName = function (config) {
  var external = moduleName(config);
  var internal = {};

  // Add extra variables and methods here

  return external;
};

module.exports = modulName;

Bei dieser Konstruktion sind folgende Punkte erfüllt:

  • public und private Variablen und Methoden. Diese sind hier als external und internal bezeichnet, da public und private reservierte Wörter sind.
  • Aufruf des neuen Objektes ohne new.
  • Erweiterbarkeit ohne große Verrenkungen.

Natürlich gibt es noch unzählige andere Methoden. Aber bei dieser Methode finde ich die Mischung aus Übersichtlichkeit und Erweiterbarkeit für meine Belange am Besten.

Zur Übersichtsseite