armature

Small app framework with plugins capabilities

Armature

Module d'aide à la création d'application

  • Architecture de plugins basée sur les modules NPM
  • Système d'interdépendance des plugins basé sur Semver
  • Séquences d'initialisation & de fermeture de l'application avec étapes asynchrones

Documentation

Utilisé par le système de plugins pour identifier la section des dépendances dans le fichier package.json. Ainsi, si la propriété name de l'application a la valeur "foo", l'application va utiliser la section "fooPlugin" dans le fichier package.json des plugins pour calculer leurs dépendances.

Exemple:

// Application
var FooApp = function() {
  this.name = 'foo';
}
 
// Fichier package.json d'un plugin
{
  "name": "fooFirstPlugin",
  "version": "v0.0.0",
  "fooPlugin": {
    "fooSecondPlugin": "v0.0.1"
  }
}
 
// Le plugin fooFirstPlugin a une dépendance vers le plugin fooSecondPlugin en version v.0.0.1.

Exécute séquentiellement toutes les étapes d'initialisation enregistrées dans l'application.

  • cb(err) Function Appelée après l'exécution de toutes les étapes d'initialisation.

Exécute séquentiellement toutes les étapes de fermeture enregistrées dans l'application.

  • cb(err) Function Appelée après l'exécution de toutes les étapes de fermeture.

Ajoute des étapes à la phase d'initialisation de l'application.

  • step(next),... Function Étapes d'initialisation de l'application.

Exemple

var dbStep = function(next) {
  // this == app
  this.database.findAll(function(err, records) {
    if(err) {
      return next(err);
    } else {
      // Travailler avec les records
      return next();
    }
  }); 
};
 
var fooStep = function(next) {
  console.log('foo !');
  return process.nextTick(next);
};
 
app.addInitSteps(fooStep, dbStep);
 
app.initialize(function(err) {
    if(err) {
      // Quelque chose ne s'est pas déroulé correctement dans la phase d'initialisation
    } else {
      // All good !
    }
});

Ajoute des étapes à la phase de fermeture de l'application.

  • step(next),... Function Étapes de fermeture de l'application.

Même fonctionnement que addInitSteps().

Enregistre un nouveau plugin dans l'application.

  • pluginPath String Chemin d'accès au dossier de plugin. Le plugin sera chargé via la méthode require().
  • pluginOpts Object Options à passer au plugin lors de son initialisation.

Initialise l'ensemble des plugins chargés dans l'application, dans l'ordre des dépendances de ceux ci. La méthode loadPlugins est pensée pour s'intégrer dans la séquence d'initialisation de l'application (voir addInitStep());

Voir la section Plugins

  • cb(err) Function Appelée après l'initialisation de tous les plugins.

Classe utilitaire de personnalisation des erreurs. Capture la pile d'appels au moment de l'instanciation.

var ArmatureError = require('armature').Error;
 
// Usage: new ArmatureError(opts)
 
var err = new ArmatureError({
  name: 'MyError',
  message: 'This is my error. There are many like it, but this one is mine.',
  status: 500 // Propriété personnalisée
});
 
console.log(err.status) // -> 500;

Classe de calcul des dépendances entre les plugins.

Un plugin Armature prend simplement la forme d'un module NPM avec un fichier package.json.

Le module sera chargé via la méthode require().

// index.js
module.exports = {
  
  load: function(opts) {
    // Chargement du plugin
    // this == app
  },
 
  unload: function(opts) {
    // Déchargement du plugin
    // this == app
  }
 
}

Les méthodes exposées par le plugin load et unload seront exécutées par l'application pendant les phases d'initialisation et de fermeture de l'application (voir méthodes initialize() et terminate() de App).

Le paramètre opts correspond aux options passées en second paramètre de la méthode registerPlugin().

Voir les exemples pour plus d'informations.