armature

Small app framework with plugins capabilities

npm install armature
44 downloads in the last month

Armature

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

Fonctionnalités

  • 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

Armature.App

app.name

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.

app.initialize( cb )

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

Paramètres

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

app.terminate( cb )

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

Paramètres

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

app.addInitSteps( step,... )

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

Paramètres

  • 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 !
    }
});

app.addTermSteps( step,... )

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

Paramètres

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

Même fonctionnement que addInitSteps().

app.registerPlugin( pluginPath, pluginOpts )

Enregistre un nouveau plugin dans l'application.

Paramètres

  • 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.

app.loadPlugins( cb )

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

Paramètres

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

Armature.Error

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

Utilisation

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;

Armature.DependencyGraph

Classe de calcul des dépendances entre les plugins.

Plugins

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

Module

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.

npm loves you