Javascript AOP支持

时间:2010-09-21 00:01:13

标签: javascript dojo aop

很容易(对于90%的aop功能)没有任何语言本身的支持,就像在python和ruby等大多数动态语言中一样。但是,Dojo1.3.2上直接支持它。最新版本发生了什么?他们删除了吗?

还有其他javascript aop库应该引起更多关注吗?

4 个答案:

答案 0 :(得分:2)

鉴于Javascript中提供了灵活的语法糖果,我想可能会有十亿个AOP库。

Google快速搜索带来了以下内容:

...和另一个Stackoverflow question

答案 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装饰者)

我还写了一篇解释这个提示的文章

https://medium.com/@k1r0s/aspect-oriented-programming-in-javascript-es5-typescript-d751dda576d0#.3d04ziock