前言
在接触这个项目之前、我是不知道whistle这个工具的, 也许曾经看到过、但可能因为没有很迫切的需求所以也没啥印象. 依稀还记得刚拉取到项目代码的那个早上、琢磨了一早上也没看明白是如何切换开发环境和线上环境的, 后面经跟同事请教后才了解到是用whistle去实现的.
为便于理解、基于微信小程序来做演示, 主要结合个人实际使用来整理whistle推文.
现状
假设:
小程序目前只存在开发环境&正式环境, 先看看目前现有的环境切换是如何实现的.
项目现状:
在项目根目录下, 会有个配置文件、需要手动修改环境变量的值, 大概代码如下.
// conf.js
const isTest = true;
const baseUrl1 = isTest ? 'http://test-xxx1.com.cn': 'http://xxx1.com.cn'
const baseUrl2 = isTest ? 'http://test-xxx2.com.cn': 'http://xxx2.com.cn'
若我们想实现环境的切换、有2种方式:
①. 编写脚本、通过执行脚本的方式修改isTest的值;
②. 打开该配置文件, 直接修改该配置文件isTest的值;
弊端:
①. 环境间的切换需要频繁改值, 不管通过上述哪种办法、都很麻烦;
②. 项目内耦合了跟业务本身无关的环境切换相关代码;
③. 若项目涉及N个环境, eg: 开发/测试/灰度/线上, 二元运算符显得很吃力;
本质原因: N个环境的域名是不一致的.
直到这里, 你就会慢慢意识到, 在面对某些特定场景时, 现有的开发方式的确可能会无能为力, 或处理起来很麻烦! 接下来我们就引入whistle, 看看对我们的开发和调试是否方便很多呢.
whistle简介
基于Node实现的跨平台调试工具, 类似Fildder, 可实现不止如下功能:
①. 查看、修改HTTP/HTTPS请求;
②. 作为代理服务器使用;
③. 实现本地Mock数据;
④. others...
Tips: 上面写到的是目前接触到的比较常用的功能点, 详细的whistle介绍请自行搜索whistle官网哦.
优势:
可以把项目内关于环境切换的配置完全抽离出来, 业务代码按线上环境的写, 而关于接口的转发等跟项目业务无关的环境切换问题全部交由whistle来处理.
最后
若之前没接触过whistle, 可以尝试去了解了解, 你会发现也许它能解决你目前开发过程中遇到的比较困惑的问题.