var Class = require("kaop").Class;
var Dummy = Class({
someMethod: [ //decoratedMethod
"subscribe","$inject", //befores
function($$dep1){
//method body
},
"trigger: 'action'", //afters (advice with an argument)
],
anotherMethod: function(){
/* method without advices */
}
})
4条答案
按热度按时间mnowg1ta1#
考虑到Javascript中灵活的语法,我可以想象会有十亿个AOP库。
在谷歌上快速搜索一下,结果如下:
...和另一个Stackoverflow question
c9x0cxw02#
lang.aspect仍然在那里,仍然被一些严肃的项目使用。没有人删除它。事实上,我希望它的一部分将成为即将到来的Dojo 2.0的重要组成部分。
你问这个问题的原因是什么?找不到一些链接,或者是别的什么?只要让我知道,我会帮助你的。
API文档链接:http://dojotoolkit.org/api/dojox/lang/aspect.html
指向我的关于AOP的博客文章的链接(在您的问题中列出:http://lazutkin.com/blog/2008/may/18/aop-aspect-javascript-dojo/)仍然是最新的,所以你可以把它作为一般参考,我计划把它移植到官方参考文档中。
nle07wnf3#
好吧,你可以试试这些装饰器https://www.npmjs.com/package/ng-aspect,它们给TypeScript(ES 2015/2016)带来了真实的的AOP体验。
pcrecxhr4#
当然,任何语言都支持AOP,因为AOP是一种技术,你应该自己实现它。
ES7装饰器对于AOP语法来说非常棒,但是不需要通过打字脚本来获得真实的的AOP体验。甚至ES5也可以做到:
我建议你去看看我最近的工作,它实现了顶级的AOP特性,甚至异步调用
https://github.com/k1r0s/kaophttps://github.com/k1r0s/kaop-ts(Alpha)(如果你喜欢ES7装饰器)
我还写了一篇文章来解释这个技巧
https://medium.com/@k1r0s/aspect-oriented-programming-in-javascript-es5-typescript-d751dda576d0#.3d04ziock