zoukankan      html  css  js  c++  java
  • proxy代理

    Proxy的意思是代理,一般称作拦截器,可以拦截对象上的一个操作。通过new的方式创建对象,第一个参数是被拦截的对象,第二个参数是对象操作的描述。实例化后返回一个新的对象,当我们对这个新的对象进行操作时就会调用我们描述中对应的方法。
    输入cookie-proxy打开8899的登录页原理:
    在当前目录下启动cookie-proxy,cookie-proxy会读取当前目录下proxy.config.js文件中的配置
    注意由于api请求会发送到127.0.0.1:8899,存在跨域问题,需要设置响应头access-control-expose-headers
    目前已经加入的响应头有
    javascript代码如下:
    config.proxy.afterProxy = ({response}) => {
        response.set('access-control-expose-headers', 'x-all-count, x-create-count, x-total-count');
        return true;
    };

    proxy.config.js文件:

    module.exports = config => {
        config.proxy.afterProxy = ({response}) => {
            response.set('access-control-expose-headers', 'x-all-count, x-create-count, x-total-count, x-pr-count');
            return true;
        };
    
        return config;
    };

    Proxy与Object.definedProperty的区别:

     proxy用法如下:

    new Proxy(target, {
    get(target, property) {
    
    },
    set(target, property) {
    
    },
    deleteProperty(target, property) {
    
    }
    })

    Proxy区别于Object.definedProperty。

    Object.defineProperty只能监听到属性的读写,而Proxy除读写外还可以监听属性的删除,方法的调用等。

    通常情况下我们想要监视数组的变化,基本要依靠重写数组方法的方式实现,这也是Vue的实现方式,而Proxy可以直接监视数组的变化。

    const list = [1, 2, 3];
    const listproxy = new Proxy(list, {
    set(target, property, value) {
    target[property] = value;
    return true; // 标识设置成功
    }
    });
    
    list.push(4);


    Proxy是以非入侵的方式监管了对象的读写,而defineProperty需要按特定的方式定义对象的属性

  • 相关阅读:
    react 踩坑第一天
    vue-cli+axios+跨域
    vuex 进阶 mapState mapGetter mapActions mapMutations
    vue Bus
    各种html布局
    echarts柱状图设置渐变色
    html设置一个当前时间
    css设置字体渐变色
    C++中指针与引用详解
    go-admin 开源后台管理系统
  • 原文地址:https://www.cnblogs.com/huxiuxiu/p/14819380.html
Copyright © 2011-2022 走看看