一、非技术层面
1. 项目----拆分----> 模块
项目开始时,应把项目分解为多个模块.按照模块间耦合度排序.按照低耦合==>高耦合开发.
比如该项目的顺序就是:
登录注册=>钱包模块=>我的模块=>商家=>任务=>工人=>IM=>订单=>工程
前端和程序一块开始项目,稍微等登录注册写两个页面就可以开干了.缩短了项目周期
前端15天 + 程序20天 = 35天 ===> 前端15天 + 程序20天 = 21天
2.让原型图发挥最大作用.
下面一张被侮辱过后的原型图
原型图
✔ 代表前端此页面已完成,并在下方标注模板页面名称(如订单十几个长相差不多的页面,项目总计180+个页面,不标注根本分不清楚)
▲ 代表美工已审阅前端做出页面
⭐代表程序已经开发完此页面
在此页面上测试人员也可以做出一种标记,不会出现漏测页面情况.
3.与前端沟通交流(插件)
- 项目开始初:大体总结出页面什么地方需要插件,插件的作用.
- 项目开始中:程序给你什么数据(前端要什么数据) + 程序拿到什么数据(前端抛出来什么数据) 前端适当的暴露给程序接口.
下面我要举栗子了:
需求:项目需要显示地图可视范围内的任务,顶部是筛选插件(工种,时间段,关键词)
- 前期
程序会给前端 工种
程序需要得到 工种,时间段,关键词
程序需要json对象格式 - 开发中
发现在app中调用plus的地图会打开一个新的webview,使用css的z-index是无效的
所以需要在插件展开和折叠触发回调(callbackSlideDown、callbackSlideUp)使地图hide和show - 开发后
上帝想在点击遮罩层的时候折叠插件,和前端沟通好后不需要改模板任何代码.只需要在点击遮罩折叠触发callbackSlideUp即可 -
总结
在写插件时候,尽量保持让每个方法处理单独的逻辑(一个方法或函数仅有一个职责).这样使前期的开发和后期的维护更方便.
插件
任务筛选插件主要代码
二、技术层面
1. Plus地图
上述插件主要逻辑
- 定义地图全局变量
- 搜索局部变量
- 存在地图 && 销毁存在的地图
- 生成地图
- 设置中心点
- 拿到数据数据设置点(覆盖物)
- 地图改变(onstatuschanged) 重新设置点(覆盖物)
2.Elasticsearch(es)在实际项目中的应用
es中的排序上述需求如果只是根据距离排序,那么只需要使用sort就可以完成.
但是如果按照评分和最近发布来排序应该怎么处理?
如何拿到距离?
-
修改前
es中根据geo排序 -
修改后
es中自定义脚本
使用自定义脚本后可以使sort更加灵活.根据前端传的排序规则拼装es查询语句.
组合查询例子:
Array
(
[query] => Array
(
[bool] => Array
(
[must] => Array
(
[0] => Array
(
[term] => Array
(
[city_id] => 76
)
)
[1] => Array
(
[term] => Array
(
[type] => 2
)
)
[2] => Array
(
[multi_match] => Array
(
[query] => 李
[fields] => Array
(
[0] => name
[1] => contact_tel
)
)
)
[3] => Array
(
[term] => Array
(
[area] => 锡山区
)
)
[4] => Array
(
[terms] => Array
(
[worktype] => Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => 吊顶隔墙
[1] => 装门
[2] => 定制家具
)
)
)
)
[5] => Array
(
[range] => Array
(
[workyear] => Array
(
[lte] => 2013
)
)
)
[6] => Array
(
[terms] => Array
(
[tag] => Array
(
[0] => 系统认证
[1] => 掌柜认证
[2] => 已购保险
)
)
)
)
[must_not] => Array
(
[0] => Array
(
[terms] => Array
(
[busydate] => Array
(
[0] => 20180730
[1] => 20180731
)
)
)
)
)
)
[_source] => Array
(
)
[script_fields] => Array
(
[geo] => Array
(
[script] => doc['geo'].arcDistance(31.589228,120.342128)*0.001
)
)
[sort] => Array
(
[send_score] => Array
(
[order] => desc
)
)
)
网友评论