Le Javascript est un langage de plus en plus utilisé. De même l’AOP se démocratise de plus en plus. Il ne manquait plus qu’un framework AOP en Javascript.

AspectJS est une bibliothèque Javascript permettant de faire de la programmation orientée aspect. Quelques demonstrations techniques ont déjà été faite. C’est en partant de ces exemples que AspectJS a été réalisé.

Comment fonctionne l’outil ?

Il faut écrire ses advices en Javascript puis appeler le tisseur pour positionner ces advices aux points de coupe.

Les advices doivent implémenter des méthodes suivantes :

function advices_before_pointcut ( args, name) {
	// Do something...
	return new_args;
}
function advices_after_pointcut ( result, name) {
	// Do something...
	return new_result;
}
function advice_around_poitncut ( realFunc, args, funcName) {
	// Do something before...
	var result = realFunc.apply(this,new_args);
	// Do something after...
	return new_result;
}

Le tisseur est utilisé ainsi :

Weaver.addAdvice ( Advice_object, 'advice_before_pointcut', 'before', Pointcut_target_object, 'Pointcut_target_method');
Weaver.addAdvice ( Advice_object, 'advice_before_pointcut', 'after', Pointcut_target_object, 'Pointcut_target_method');
Weaver.addAdvice ( Advice_object, 'advice_before_pointcut', 'around', Pointcut_target_object, 'Pointcut_target_method');

Une demonstration en ligne permet de se rendre compte de la simplicité de l’outil[1].

AspectJS a été testé sous Firefox et MS IE, il ne faut pas hésiter à remonter un quelconque problème de compatibilité avec un autre navigateur ou une anomalie.

Notes

[1] Attention il faut autoriser l’ouverture des popups pour cette démo.