Javascript AOP支持

Javascript AOP支持,javascript,dojo,aop,Javascript,Dojo,Aop,与大多数动态语言(如python和ruby)一样,在没有任何语言本身支持的情况下(对于90%的aop功能而言),实现这一点非常简单。然而,他在这方面得到了直接的支持。最新版本中发生了什么?他们把它拿走了吗 是否还有另一个javascript aop库应该得到更多关注?考虑到javascript中灵活的语法糖果,我想可能会有10亿个aop库 谷歌快速搜索结果如下: 。。。另一个考虑到Javascript中灵活的语法糖果,我想会有十亿个AOP库 谷歌快速搜索结果如下: 。。。另一个方

与大多数动态语言(如python和ruby)一样,在没有任何语言本身支持的情况下(对于90%的aop功能而言),实现这一点非常简单。然而,他在这方面得到了直接的支持。最新版本中发生了什么?他们把它拿走了吗


是否还有另一个javascript aop库应该得到更多关注?

考虑到javascript中灵活的语法糖果,我想可能会有10亿个aop库

谷歌快速搜索结果如下:


。。。另一个

考虑到Javascript中灵活的语法糖果,我想会有十亿个AOP库

谷歌快速搜索结果如下:


。。。另一个方面dojox.lang.aspect仍然存在,仍然被严肃的项目使用。没有人把它拿走。事实上,我希望它的一部分将成为即将到来的Dojo2.0的重要组成部分

你问这个问题的原因是什么?找不到一些链接,或者是其他原因?让我知道,我会帮你的

更新:

API文档链接:


我关于AOP的博客文章的链接(列在你的问题中:)仍然是最新的,因此你可以将其用作一般参考。我计划将其迁移到官方参考文档中。

你问这个问题的原因是什么?找不到一些链接,或者是其他原因?让我知道,我会帮你的

更新:

API文档链接:


我关于AOP的博客文章的链接(列在你的问题中:)仍然是最新的,因此你可以将其用作一般参考。我计划将其迁移到官方参考文档中。

好吧,您可以尝试这些装饰程序,它们为TypeScript(ES2015/2016)带来了真正的AOP体验。看看这个代码

import { Before, After, Pointcut } from "./aspect";

class Foo {
  @Pointcut
  bar(){
    console.log( "calling bar", arguments );
  }
}

class Advice {
  @Before( Foo, "bar" )
  preLog() {
    console.log( "calling pre-log", arguments );
  }

  @After( Foo, "bar" )
  postLog() {
    console.log( "calling post-log" );
  }
}

(new Foo()).bar( 1, 2, 3 );

// calling pre-log 1,2,3
// calling bar 1,2,3
// calling post-log

那么,您可以尝试这些装饰器,它们为TypeScript(ES2015/2016)带来了真正的AOP体验。看看这个代码

import { Before, After, Pointcut } from "./aspect";

class Foo {
  @Pointcut
  bar(){
    console.log( "calling bar", arguments );
  }
}

class Advice {
  @Before( Foo, "bar" )
  preLog() {
    console.log( "calling pre-log", arguments );
  }

  @After( Foo, "bar" )
  postLog() {
    console.log( "calling post-log" );
  }
}

(new Foo()).bar( 1, 2, 3 );

// calling pre-log 1,2,3
// calling bar 1,2,3
// calling post-log

当然,任何语言都会支持AOP,因为这是一种技术,您应该自己实现它

ES7修饰符对于AOP语法来说是很棒的,但是没有必要使用typescript来获得真正的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特性,甚至异步调用

(阿尔法)(如果你喜欢ES7装饰师)

我还写了一篇文章来解释这个技巧


任何语言都肯定会支持AOP,因为AOP是一种技术,您应该自己实现它

ES7修饰符对于AOP语法来说是很棒的,但是没有必要使用typescript来获得真正的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特性,甚至异步调用

(阿尔法)(如果你喜欢ES7装饰师)

我还写了一篇文章来解释这个技巧


在最新文档中找不到。这让它看起来像是被遗弃了,当然不是。我会调查医生的问题。现在我正在给我的答案添加API文档链接。太好了。如果它是在dojo之外作为一个单独的库提供的话,那就更好了,但是javascript项目,在Nodejs项目之外,通常不会把模块化作为一个大问题。它仍然显示。对于Dojo2.0,我们正在开发一种通用的模块和包格式,可以被其他项目采用。所以你的愿望可能会实现OTOH没有人阻止其他开发人员将Dojo的任何部分移植到其他库或将其转换为独立库。这绝对是可能的,而且不像一些人想象的那么难。在最新的文档中找不到。这让它看起来像是被遗弃了,当然不是。我会调查医生的问题。现在我正在给我的答案添加API文档链接。太好了。如果它是在dojo之外作为一个单独的库提供的话,那就更好了,但是javascript项目,在Nodejs项目之外,通常不会把模块化作为一个大问题。它仍然显示。对于Dojo2.0,我们正在开发一种通用的模块和包格式,可以被其他项目采用。所以你的愿望可能会实现OTOH没有人阻止其他开发人员将Dojo的任何部分移植到其他库或将其转换为独立库。这绝对是可能的,也不像有些人想象的那么难。