开发环境:
    前端:webpack + vue + vue-resource,基于如下模板创建的开发环境: https://github.com/vuejs-templates/webpack 
    后端:java, tomcat

问题:
    前端开发人员在使用webpack + vue的开发环境调试时,发现在所有需要调用后端接口的地方就很麻烦,目前处理如下:
    1. 将每个接口的返回值放在一个json文件中,这些json文件统一放到static目录下
    2. 开发的时候,然后所有需要调用后端接口的地方,就先把路径指向static下对应的json文件名,获取数据;
    3. 发布的时候,将所有接口的路径改为正常的路径。
    这样每次发布都很麻烦,而且很容易出错。

分析:
    通过分析webpack的build/dev-server.js文件,发现这个是使用express来实现的一个简单的web服务器,那么就考虑是否可以参考自己写一个express的中间件,将所有对于后端接口的调用都转为调用真正的后端接口,这样在发布的时候就不需要修改路径了。

解决方法:
     通过分析 build/dev-server.js 源码,发现里面有用到http-proxy-middleware(https://npm.taobao.org/package/http-proxy-middleware)  ,并且在代码中有注释:Define HTTP proxies to your custom API backend  ,这不就是我想要的吗?
    
    然后看后面的代码中去读取config/index.js内的dev.proxyTable来对http-proxy-middleware做初始化,所以我就在config/index.js的proxyTable中添加了如下内容:
    proxyTable: {       
        '/appserver/SinglePowerStation': 'http://192.168.1.82:8899',
        '/appserver/powerStationManage': 'http://192.168.1.82:8899',
    },
    
   这里有几点要说明:
    0)我要实现的目的是把所有以 SinglePowerStation、powerStationManage开头的接口调用都转到后端服务器上;
    1)我的后端服务器地址是http://192.168.1.82:8899
    2)后端接口前缀只有SinglePowerStation、powerStationManage两种;
    
    至于proxyTable的格式是通过分析build/dev-server.js内的如下代码总结出来的:
Object.keys(proxyTable).forEach(function (context) {
  var options = proxyTable[context]
  if (typeof options === 'string') {
    options = { target: options }
  }  
  app.use(proxyMiddleware(context, options))
})


——————完———————


express:webpack dev-server开发中如何调用后端服务器的接口?的更多相关文章

  1. 配置Webpack Dev Server 实战操作方法步骤

    本文摘要:配置 Webpack Dev Server 可以解决本地开发前端应用时,手动执行 webpack 命令或 yarn build 命令,再去浏览器中访问 dist/index.html 的麻烦 ...

  2. Android开发中怎样调用系统Email发送邮件(多种调用方式)

    在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...

  3. 笔记:配置 webpack dev server

    笔记:配置 webpack dev server 安装 webpack-dev-server 组件 配置 webpack.config.js 配置 增加 html-webpack-plugin 组件 ...

  4. [Webpack] Access Webpack Dev Server from Mobile Safari on an iPhone

    Testing your sites on mobile devices is a critical part of the development process. Webpack dev serv ...

  5. ios开发中如何调用苹果自带地图导航

    前段时间一直在赶项目,在外包公司工作就是命苦,天天加班不说,工作都是和工期合同挂钩的,稍微逾期就有可能被扣奖金,不谈这些伤脑筋的事情了,让我们说说iOS开发中如何调用苹果手机自带的地图. 学习如逆水行 ...

  6. 基于 Sequelize.js + Express.js 开发一套 Web 后端服务器

    什么是 Sequelize 我们知道 Web 应用开发中的 Web 后端开发一般都是 Java.Python.ASP.NET 等语言.十年前,Node.js 的出现使得原本仅限于运行在浏览器中的 Ja ...

  7. MacOS和iOS开发中异步调用与多线程的区别

    很多童鞋可能对Apple开发中的异步调用和多线程的区别不是太清楚,这里本猫将用一些简单的示例来展示一下它们到底直观上有神马不同. 首先异步调用可以在同一个线程中,也可以在多个不同的线程中.每个线程都有 ...

  8. 快速web开发中的前后端框架选型最佳实践

    这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...

  9. Android开发中如何调用摄像头的功能

    我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码     & ...

随机推荐

  1. 验证位置时发生错误:“org.tigris.subversion.javahl.ClientException......

    验证位置时发生错 误:“org.tigris.subversion.javahl.ClientException: RA layer request failed svn: Server sent u ...

  2. 从拟物化到扁平,再到Material Design

    Google I/O 2014提出Material Design,这段时间听到不少关于Material Design的解读,至此Google已经定位了自己的设计语言,我个人看来就是Android和iO ...

  3. SQL查询数据库中所有指定类型的字段名称和所在的表名

    --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ...

  4. 使用国内 maven 镜像 代替国外 mirror

    使用maven的都知道国外的maven下载一个是比较慢,一个是因为被墙,一些jar包无法下载,非常老火. 比如出现类似下面的错误: Unknown host repo.maven.apache.org ...

  5. 烂泥:更换ESXI5.0管理网卡及管理IP地址

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 公司的服务器基本上都是在IDC机房里面的,为了更有效的利用服务器性能.所以有几台服务器,安装的是ESXI5.0做成虚拟化. 注意目前这些服务器都是双网卡 ...

  6. 一个PHP混淆后门的分析

    洒家的朋友的公司的某个站发现最近被上传了一个后门程序.为了取证我们抓取了HTTP请求流量,看到了一堆莫名其妙看似经过混淆的请求,响应也是看似base64的乱码.洒家用了2个小时静态分析了一遍,并写了利 ...

  7. Win8 忘记密码 解决办法【在E450c实测有效】

      工具/原料 已经刻录通用PE工具箱的U盘 方法/步骤 1 首先来看一下,问题产生的状况.出现登陆界面,由于密码忘记,怎么输入密码,老是提示密码错误 2 接下来,按住Shift,电脑关机重启,也就是 ...

  8. 一次Mutex死锁的原因探究

    1.现象    最近项目中调出一个bug,某些时候程序会卡死不动,用windbg进行加载后用 ~*kb 命令列出所有的线程栈调用,发现有多个线程调用 WaitForMultipleObjects 在等 ...

  9. vi/vim实用命令

    查找 n是下一个,N是上一个 撤销和重做 u:撤销上一步的操作 ctrl+r:恢复上一步被撤销的操作 替换 :1,$ s/aaa/bbb/g

  10. Virtual Box常用指令

    以下操作需在命令行里将当前路径设为 Virtual Box安装目录 1. 调整磁盘大小(只能调整动态分配的.vdi格式文件) VBoxManage modifyhd "xxx.vdi&quo ...