很容易(对于90%的aop功能)没有任何语言本身的支持,就像在python和ruby等大多数动态语言中一样。但是,Dojo在1.3.2上直接支持它。最新版本发生了什么?他们删除了吗?
还有其他javascript aop库应该引起更多关注吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
dojox.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/)仍然是最新的,因此您可以将其用作一般参考。我计划将其迁移到官方参考文档。
答案 2 :(得分:0)
好吧,你可以试试这些带来TypeScript(ES2015 / 2016)真实AOP体验的装饰https://www.npmjs.com/package/ng-aspect。看看这段代码
Ball class
答案 3 :(得分:0)
绝对任何语言都支持AOP,因为这是一种技术,你应该由你自己来实现。
ES7装饰器对于AOP语法非常棒,但是没有必要使用打字稿来获得真正的AOP体验。即使是ES5也可以做到:
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 */
}
})
我建议你查看我最近的工作,它实现了顶级的AOP功能,甚至是异步调用
https://github.com/k1r0s/kaop https://github.com/k1r0s/kaop-ts(Alpha)(如果你喜欢ES7装饰者)
我还写了一篇解释这个提示的文章