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.

Zuletzt geändert am

fboës - Der Blog

Zur Übersichtsseite