• JS面向切面编程AOP


    什么是AOP?

    AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计、安全控制、异常处理等。把这些功能抽离出来之后, 再通过“动态织入”的方式掺入业务逻辑模块中。

    AOP能给我们带来什么好处?

    AOP的好处首先是可以保持业务逻辑模块的纯净和高内聚性,其次是可以很方便地复用日志统计等功能模块。 

    JavaScript实现AOP的思路?

    通常,在 JavaScript 中实现 AOP,都是指把一个函数“动态织入”到另外一个函数之中,具体的实现技术有很多,下面我用扩展 Function.prototype 来做到这一点。  

    主要就是两个函数,在Function的原型上加上before与after,作用就是字面的意思,在函数的前面或后面执行,相当于无侵入把一个函数插入到另一个函数的前面或后面,应用得当可以很好的实现代码的解耦,js中的代码实现如下:

    //Aop构造器
    function Aop(options){
        this.options = options
    }
    //业务方法执行前钩子
    Aop.prototype.before = function(cb){
        cb.apply(this)
    }
    //业务方法执行后钩子
    Aop.prototype.after = function(cb){
        cb.apply(this)
    }
    //业务方法执行器
    Aop.prototype.execute = function(beforeCb,runner,afterCb){
        this.before(beforeCb)
        runner.apply(this)
        this.after(afterCb)
    }
    
    var aop = new Aop({
        afterInfo:'执行后',
        runnerInfo:'执行中',
        beforeInfo:'执行前'
    })
    
    var beforeCb = function(){
        console.log(this.options.beforeInfo)
    }
    var afterCb = function(){
        console.log(this.options.afterInfo)
    }
    var runnerCb = function(){
        console.log(this.options.runnerInfo)
    }
    
    aop.execute(beforeCb,runnerCb,afterCb)

    广州品牌设计公司https://www.houdianzi.com PPT模板下载大全https://redbox.wode007.com

    应用的一些例子:

    1. 为window.onload添加方法,防止window.onload被二次覆盖
    2. 无侵入统计某个函数的执行时间
    3. 表单校验
    4. 统计埋点
    5. 防止csrf攻击
  • 相关阅读:
    [换根dp] Codeforces Round 67 (Rated for Div. 2) E
    [思维]Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) A B1 B2 C D
    [Comet OJ
    关于Winform中的消息框MessageBox
    C#截取字符串的几种方式
    C#中的时间格式大全
    winform中dev的TreeList基本使用方式
    拉取项目时error setting certificate verify locations解决方式
    如何在GridView中新增按钮列
    使用GitHub/码云/Git个性化设置
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/14096885.html
Copyright © 2020-2023  润新知