NgAspect 1.0 BETA
NgAspect
is a little library of decorators that unlocks aspect-oriented programming features in JavaScript.
Aspect-oriented programming suggests separating cross-cutting concerns (logging, caching, monitoring, data validation, error detection and so on) from main business logic. In brief it introduces:
- advice - code implementing cross-cutting concerns
- pointcut - when code where in your main code advices shall be applied
NgAspect
provides decorators @Before
and @After
that allow to bind an advice to a pointcut e.g. @Before( Class/Constructor, "methodName" )
.
It also exports @Pointcut
decorator that points out what method can be supplied with advices.
How does it work?
; @Pointcut { console; } @ { console; } @ { console; } ;
Output:
calling pre-log 1,2,3
calling bar 1,2,3
calling post-log
The same goes for static methods
; @Pointcut static { console; } @ @ static { console; } Foo;
Syntax
Setting a single target
@Before( Foo, "bar" )
@After( Foo, "bar" )
or
@Before([ Foo, "bar" ])
@After([ Foo, "bar" ])
Setting multiple targets
@Before([
[ Foo, "bar" ],
[ Baz, "quiz" ],
])