我们偶然辰会碰到一个营业页面存在很多个状态,甚至子状态,比如定单详情就是其中的典型,触及从定单建立到定单竣事,以及售后等流程。保护起来每个状态对应一份数据,虽然我们 QA 供给了数据机关平台,但机关一份对应状态的数据还是需要花费很多时候,而且串行流程一旦出错的话只能重新来一遍。 前期保护阶段也不轻易机关对应状态的数据,致使排查页面题目比力耗时。 别的一个题目就是重新熟悉营业的话本钱比力高,倘使有一个直观的页面可以看到页面款式会好很多。 以上就是设想一个多状态 mock 工具初衷,让开辟者在页面中间接挑选对应状态,便可以切换到对应页面。 技术选型今朝转转 APP 测试包,webview 页面气泡浮层已经有两个了——客户端工具和 eruda,再多就乱套了,所以最好集成在现有的工具根本上。客户端部分功用我们打仗不到也不领会,在现有条件下只要 eruda 可用。 Eruda 是一个很强大的前端页面调试工具库,我们客户端 webview 也内置了,在测试包中可以很方便的借助 eruda 调试页面,观察日志。同时 eruda 也支持插件,经过插件来扩大 eruda 的功用。 我们的工具就基于 eruda 插件来实现。 实现结果预览: 插件预览图 整体流程以下: 插件流程 全部流程大要三个部分组成
营业逻辑革新首先要实现这样一个计划焦点依靠于营业利用的请求库,以及能否可以对请求库停止点窜。 我们营业利用的基于 axios 的请求库,其表露了现实发送请求的 adapter 逻辑,我们可以基于 adapter 来实现接口方式的阻挡。 axios adapter 借助 axios-mock-adapter[1],可以很方便的实现我们的需求。 import { axiosInstance } from '@zz/fetch';import MockAdapter from 'axios-mock-adapter'; export const mock = new MockAdapter(axiosInstance) try { // 借助 localstorage 实现 eruda 插件和 axios-mock-adapter 通讯 const mockReqConf = JSON.parse(localStorage.getItem('_mock_req')) if (mockReqConf && mockReqConf.mockId) { mock.onGet(api.getOrderDetail).reply(config => { // console.log('mock api', api.getOrderDetail) return axiosInstance.get('https://mockrepository.zhuanzhuan.com/orderdetail?mockId=' + mockReqConf.mockId) }) } mock.onAny() .passThrough() const isProduction = process.env.NODE_ENV === 'production' if (isProduction || (mockReqConf && mockReqConf.mockId === '')) { // sessionStorage 实现开关,假如没有此设置,就重置设备的 mock 阻挡 if (!sessionStorage.getItem('mock-adapter')) { mock.restore() } } } catch (error) { console.log('mock adapter config error', error) } Eruda 插件插件的目标是实现两个功用,一个是总开关,另一个是 mock 数据的展现和切换。 总开关借助 sessionStorage,webview 封闭 sessionStorage 数据断根,这样避免了一进入页面就是mock数据,避免忘记封闭以及频仍操纵,需要的时辰才翻开。 Mock 数据的展现设置在一个设置文件中,公司有同一的设置中心,基于携程 Apollo 实现。这个文件的感化是映照对应的状态和 mock 数据来历,来历是同一的,所以只用参数区分即可。 示例以下: [{ "id": "/order/detail", "list": [ { "title": "正向流程", "list": [ { "title": "下单待发货", "id": "1-0-1" }, { "title": "寄卖下单", "id": "1-1-0" }, { "title": "发货运输中", "id": "1-2-0" }, { "title": "平台质检", "id": "1-3-0" } ] }, { "title": "逆向流程", "list": [ { "title": "申请退回-退回中", "id": "2-3-2" } ] } ] } ]
Eruda 插件的实现参考 eruda 官方文档。 Eruda 若何写插件[2] https://github.com/liriliri/eruda/blob/master/doc/PLUGIN.md Eruda 插件写法类比力像一个小的模板库,eruda 供给了插件模板,绑定事务方式类似于 jQuery 语法,eruda 供给的 licia 工具库均有对应方式,参考即可。 (function(root, factory) {if (typeof define === 'function' && define.amd) { define([], factory); } else if (typeof module === 'object' && module.exports) { module.exports = factory(); } else { root.erudaPlugin = factory(); } })(this, function() { return function(eruda) { var Tool = eruda.Tool, util = eruda.util; var Plugin = Tool.extend({ name: 'plugin', init: function($el) { this.callSuper(Tool, 'init', arguments); this._style = util.evalCss( [ '.eruda-dev-tools .eruda-tools .eruda-plugin {padding: 10px;}', '.eruda-tip {padding: 10px; background: #fff; color: #263238;}' ].join('.eruda-dev-tools .eruda-tools .eruda-plugin ') ); $el.html( '<div class="eruda-tip">Put whatever you want here:)</div>' ); }, show: function() { this.callSuper(Tool, 'show', arguments); }, hide: function() { this.callSuper(Tool, 'hide', arguments); }, destroy: function() { this.callSuper(Tool, 'destroy', arguments); util.evalCss.remove(this._style); } }); return new Plugin(); }; }); Mock 数据整理这一部分实在是比力花费体力的工作。需要整理每一个状态的数据,存储起来。前面提到公司供给的一个接口平台,基于去哪儿 YAPI 搭建,其供给了每个接口 mock 才能,我们增加 mock 数据即可。 前面设置文件中每一个状态下的id实在就是 mock 数据的参数。 利用的时辰,点选每一个状态,将状态值写入 localStorage 傍边,革新页面。axios 请求时检测能否有 localStorage 设置,有的话取出对应值,拼接到 YAPI mock 接口请求傍边,获得到 mock 数据,然后页面就是 mock 数据衬着出来的了。 初步尝试后,可以让我们在页面开辟进程中可以很方便得检察分歧页面下的页面展现,相比于之前的要末是查询线上数据,要末是经过数据机关一步一步找到对应状态,都大大节省了时候,提升了效力。 同时对于产物和设想同学,也可以快速的找对对应页面的样子,方便产物对现有页面停止调剂,设想同学对页面复原度停止检查等等。 不敷之处也有,就是数据的保护,现在每一个状态下存储的都是一份完整的数据,假如某一部分调剂了的话,那末一切的数据都要点窜,数据越多,保护本钱相对来说也越高。 以上是基于现有根本才能搭建出来的一个简单工具,固然还有更多改良空间,请多指教。 参考材料[1] axios-mock-adapter: https://github.com/ctimmerm/axios-mock-adapter [2] Eruda 若何写插件: https://github.com/liriliri/eruda/blob/master/doc/PLUGIN.md [3] Eruda 工具库: https://licia.liriliri.io/docs_cn.html |
在工作中,除了技术工作之外,我们也经常需要写一些项目的方案,当然如果公司比较大,
尽管“断直连”的基本方向已确定,但受各参与方合作意愿、政策理解角度、科技/服务能
作为运营人,写方案是必不可少的,而要想写一份优秀的运营方案,掌握框架、抓准方案的
想要做一名合格的产品经理,首先要能写好一份好的产品方案。一份好的产品方案,会在产
可能不需要再更新了,所以放在开头。因为对我这个方案不满意,所以试了其它的方案,用
2019.09.26更新:文章内容较多,前半部分主要阐述完成一份方案所需的运营思维,建议刚
这是一个故事。请各位看官老爷酌情相信。方案一方案一方案二方案二方案三方案三方案四
编辑导语:有些人在写策划方案时,总觉得页数越多,感觉准备得越充分,对策划案页数迷
听周边的同事和学员的反馈说,每次一到写方案的时候,经常会陷入一种非常焦虑的状态:
11月21日,据中国人民银行网站消息,为深入贯彻党中央、国务院决策部署,按照《长江三
制作:刘珂君、岳小乔、皇甫凌雨、冯慧文、安博文
我国正在加速进入老龄化,这是不争的事实。专家早在几年前就提出了延迟退休的方案,当
近日,中共中央办公厅、国务院办公厅印发了《粮食节约行动方案》,并发出通知,要求各
日常工作问题剖析实际的工作中,不管是项目经理还是售前工程师,给客户提供的大部分解
近日,济南市政府印发《济南市数字人民币试点工作实施方案》(以下简称《实施方案》)
无论是从事运营、策划或其他需要制定方案的岗位,写方案、改方案、执行方案都将成为你
如何保证项目实施成功?项目设计?需求报告?调研记录?项目培训?项目策划?上述提到
国务院联防联控机制11月22日举行新闻发布会表示当前,随着奥密克戎变异株快速传播我国
编辑导语:在产品经理的日常工作中,往往需要了解和收集许多的用户需求,那么,如何将
以下文章来源于泡泡Ter ,作者老1泡听身边不少朋友同事聊到他们写方案时的状态,经常
声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15314649589
Copyright @ 2022-2044 杭州共生网络 www.gongshengyun.cn Powered by Discuz!