Vue使用vue-recoure + http-proxy-middleware + vuex配合承诺实现基本的跨域请求封装

  

使用vue init webpack你的项目名称初始化一个vue的项目

  
      <李>安装依赖<代码> npm安装vue-resource http-proxy-middleware vuex高雅   <李>在项目的main.js中引入并注册下载的依赖李   <李>在main.js中引入vue-resource并注册到vue实例中李   
        从“vue-resource”//用进口VueResource来请求接口   Vue.use (VueResource)//开启后请求就会以应用程序/x-www-form-urlencoded作为MIME类型就像普通的html表单一样,形形式式传给后台,而非JSON   Vue.http.options。emulateJSON=true;      

在main.js文件同级创建一个店的文件夹用来存放vuex的文件

  

在商店文件夹中创建一个index.js的文件(vue在查找时会自动查找这个文件),在文件中创建店实例并导出

        从“Vue”进口Vue   从“VueX”进口VueX   从“进口操作。/行动//这里为了可扩展性,所以单独创建一个文件用来存放请求方法   Vue.use (VueX);//请求之甬道行动所以只导入了行动   出口默认新VueX.Store ({   行动   });   之前      

在商店文件夹中创建一个actions.js的文件用来存放请求方法

  

 Vue使用vue-recoure + http-proxy-middleware + vuex配合承诺实现基本的跨域请求封装

  

  

在配置文件夹下面创建一个host.js文件用来存放开发,测试,生产的请求地址ip

  

 Vue使用vue-recoure + http-proxy-middleware + vuex配合承诺实现基本的跨域请求封装

  

在文件中你可以根据条件来配置到底是开发还是测试或者是正式环境

        让HostType=0;//用来判断当前是什么环境   让主人={};//用来存储当前环境的请求ip   如果(HostType==0) {   主机={//对象内的字段可以自定义如果整个项目只有一个后台地址只需要一个字段就可以;   api:“127.0.0.1:9000”,   基础:“”,   fileUp:“”   }   }else if (HostType==1) {   主机={   …   }   }else if (HostType==2) {   主机={   …   }   }   模块。出口=主机;      

  

在配置文件夹下面创建一个proxy-table.js文件用来存放代理的配置

  

        const主机=要求(“。/HOST.js”);   模块。出口={//接口代理   “/api/文本":{   目标:主机。api,//需要代理到那个地址   changeOrigin:真//是否跨域   },   “/api/演示":{   目标:HOST.api,   changeOrigin:真   }   }      

在配置文件夹下面创建一个proxy-middleware.js凭借代理和注册

  

     //导入插件   const proxyMiddleware=要求(“http-proxy-middleware”);//导入代理的配置   const proxyTable=要求(“。/代理表”);//拿出配置代理的所有匹配的字段   const proxyContext=种(proxyTable);["///api/文本”,“/api/演示”)      模块。出口=()=比;{//创建一个默认的配置对象   const defautOptions={   changeOrigin:没错,   安全:假   }//为什么返回的是一个异步的方法是因为请求代理是通过服务器进行代理的在启动脚本中会使用洋槐框架来注册这个中间件   下一个返回异步(ctx)=比;{//ctx和未来都是高雅框架中间件自带的参数   (让上下文proxyContext){//循环我们拿到的键数组   如果(ctx.url.startsWith(上下文)){//判断当前请求的url中是不是以拿到的键数组中的某个值开头的   ctx。回应=false;//绕开高雅框架的内置响应处理   让选项=proxyTable[背景];//如果拿取到的直接是IP地址就赋值给配置对象   如果(typeof选项==='字符串'){   选择={   目标:选项   }   }//使用Object.assign()方法合并两个对象   选择=Object.assign ({}, defautOptions选项);//将每一个代理都注册,这里必须返回一个自执行函数否则代理不会设置成功   proxyMiddleware(上下文,选择)(ctx ctx.req。res,下一个);   }   }   等待下一个();   }   }      

在项目的更目录中创建一个服务启动的文件脚本名字自定义

  

     //在脚本文件中导入我们需要的框架和代理配置文件   const高雅=要求(“高雅”);//所用的框架   const代理=要求(“。/config/proxy-middleware”);//刚才创建的代理配置文件//创建一个服务   const应用=new高雅();//将代理插件注册到服务上   app.use(代理());//因为我们导出的是一个方法所以需要使用调用的方式注册//启动服务   app.listen(9000年,()=比;{   控制台。日志(“服务器运行在http://127.0.0.1:9000”);   });//对高雅框架不是熟悉的可以使用表达框架如果使用表达框架拿代理就不用使用前面那样复杂的写法了   const表达=要求(“表达”);   const代理=要求(“http-proxy-middleware”);   const应用=表达();   app.use (express.static (" dist/"));   代理({app.use (“/?   目标:“http://127.0.0.1:3000”,   changeOrigin:没错,   }))   app.listen (9000 (err)=比;{   如果(err)返回console.log(错);   控制台。日志(“应用程序运行在http://127.0.0.1:9000”);   })

Vue使用vue-recoure + http-proxy-middleware + vuex配合承诺实现基本的跨域请求封装