Javascript AOP

这是8月参加的一次深圳前端技术分享会,有个小伙伴分享了一个关于AOP的demo,回来又查了一些关于AOP的资料

demo
  function main() {//主函数
        console.log('this is main');
    }
    function logBefore(arg_log) {
        console.log('this is logBefore');
    }
    function logAfter(arg_log) {
        console.log('this is logAfter');
    }

    Function.prototype.before = function (func) {
        var vm = this;//指向在before之前调用的对象
        console.log("before",vm);
        return function () {//前置
            func.apply(this);//先  /*apply(obj,args);用obj代替当前对象*/
            vm.apply(this);//后
        }
    };

    Function.prototype.after = function (func) {
        var vm = this;//指向在after之前调用的对象
        console.log("after",vm);
        return function () {//后置
            vm.apply(this);//先
            func.apply(this);//后
        }
    };
    testAOP = main.before(logBefore).after(logAfter);
    testAOP();


Aspect Oriented Programming
将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

在网上搜了一下,和AOP相关度比较高的是Spring,那么在web前端有AOP的用武之地吗?

比如说,在angular的项目中,我在每个控制器执行之前,都需要校验一把用户是否有执行权限 或者 token是否过期,如果没有权限或token已过期,就需要显示对应的提示或跳转到登录页面;目前的做法是在所有控制器上加一层父控制器,在父控制器里实现校验,那么,这里是不是就可以使用AOP来实现了呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值