2010-09-21 4 views
1

Это довольно просто (для 90% функций aop), чтобы сделать это без какой-либо поддержки, являющейся самим языком, как на большинстве динамических языков, таких как python и ruby. Однако Dojo имел прямую поддержку для него на 1.3.2. Что произошло в последних версиях? Удалили ли они его?Поддержка Javascript AOP

Есть ли еще библиотека javascript, которая должна привлечь больше внимания?

ответ

2

Учитывая гибкий синтаксический сладости, доступный в Javascript, я бы предположил, что там будет миллиард библиотек AOP.

Быстрый поиск Google воспитан следующее:

... и еще Stackoverflow question

2

dojox.lang.aspect все еще там, по-прежнему в использовании по серьезным проектам. Никто не удалил его. На самом деле я надеюсь, что части этого будут важной частью предстоящего Dojo 2.0.

В чем причина вашего вопроса? Не удалось найти ссылки, или это было что-то еще? Просто дайте мне знать, и я помогу с этим.

Update:

Ссылка API документация: http://dojotoolkit.org/api/dojox/lang/aspect.html

Ссылка на моем блоге о АОП (она указана в вашем вопросе: http://lazutkin.com/blog/2008/may/18/aop-aspect-javascript-dojo/) сохраняет свою актуальность, так что вы можете использовать его в качестве общая рекомендация. Я планирую перенести его в официальную справочную документацию.

+0

не удалось ф ind в последней документации. Казалось, что он был оставлен. –

+0

Конечно нет. Я исследую проблему документа. На данный момент я добавляю ссылку API doc к моему ответу. –

+0

Отлично.Это было бы еще больше, если бы оно было предоставлено как отдельная библиотека за пределами додзё, но проекты javascript, за пределами Nodejs, обычно не имеют модульности в качестве большой проблемы. –

0

Ну, вы можете попробовать эти декораторы https://www.npmjs.com/package/ng-aspect, которые привносят в реальный опыт AOP в TypeScript (ES2015/2016). Посмотрите на этот код

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 
0

Определенно любой язык будет поддерживать АОП, потому что это техника, вы должны реализовать ее сами.

ES7 Декораторы являются удивительными для синтаксиса 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 */ 
    } 
}) 

Я предлагаю вам проверить свою последнюю работу, которая реализует главные функции АОП, даже асинхронных вызовов

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