High一下!

快应用开发实践踩坑

纸上得来终觉浅,觉知此事要躬行

前言

​ 工作后发现写文章的频率变得少了很多,还是要多总结下的,最近在开发公司搜狗搜索快应用,开发最初毫无经验完全对着文档,快速迭代了好几版,也是时候做个总结和吐槽了。、

快应用是什么?

借用官方的说法有三点:

  1. 基于手机硬件平台的新型应用形态,标准由主流手机厂商(==仅限安卓==)组成的快应用联盟联合制定。
  2. 快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台,以平台化的生态模式对个人开发者和企业开发者全品类开放。
  3. 快应用无需安装、即点即用。

个人觉得就是应用商店内部的小程序吧,而且还要面临各个厂商的问题,ios缺阵也是一大不爽,无论如何既然作为一种生态还是很有而且无需安装能力也和app相近还是有很大的前景的(参加快应用沙龙指导汽车之间DAU有10w,还是不错的),作为前端人员还是很有学习必要的。

##开发流水账

  1. 开发工具:首先官方提供了开发工具hap-toolkit 和快应用调试器(直接下载安装,支持扫码本地安装),具体开发可参见文档,值得注意的是使用hap开发时,如果升级了hap版本,要记得在项目目录下执行hap update 不然后面执行hap命令打包会出问题。说到打包,打包签名包后要想使用调试器本地安装要记得先清空系统快应用缓存。快应用官方没有ide,华为自己开发了一个ide,为了和ide搭配又开发了个调试器,很坑,在官方调试器没问题,放到华为调试器上会报一堆错误,,目前还没完美解决。真希望对于开发工具和标准能做到统一啊
  2. 全局配置manifest.json文件:包括项目的一些基本信息,和全局配置项和全局数据,比如标题栏、debug级别、路由、最低平台、菜单、页面设计基准等
  3. 样式:样式感觉比较坑,支持特别少,盒模型border-box模型,布局不支持绝对定位,想要灵活定位只能使用stack组件
  4. 路由:支持新增、替换、回退路由,并且能获取当前路由页面栈,路由可以传递参数,路由页面可以通过this.params取到,实际中发现死活去不到,最后发现要想渠道商必须在页面public对象内定义
  5. web组件:我们搜索结果页是使用的webview,发现某些case下页面会特别卡顿,最后偶然发现web组件是直接暴漏在template下的,外面包一层div,就可以解决webview内部再次搜索卡顿,也是侥幸能发现这个问题的解决方案。
  6. 输入框输入某些case 出sug框时会莫名闪退,以为我们为了提高list组件滚动性能把搜索框放进了list组件内部,接着就出现了某些查询词时闪退,反复验证搜索框放在外面就不会,后面考虑到既然是因为sug直接暴漏在在list内部会闪退,那我们就把sug框也放进list内部进行嵌套,果然解决了闪退问题
  7. list组件滚动有个坑,通过scrollTo事件到顶时不会触发到顶事件,在tab组件内嵌套时外部也不能跟着滚动,嵌套list内部list不识别三元判别(不识别绑定数据变化),tab组件直接嵌套list滚动置顶会有一个tab的距离差值,list外面包一层div
  8. 接口问题:这个感觉最不合理的,他们接口竟然几乎全部都是异步接口,这让对数据流有所要求的地方写起来极其别扭,彷佛回到回调地狱
  9. 父子组件传递参数不能用驼峰,这个被坑了好几次
  10. channelReady判断不准,false也可以吊起,吊起url参数长度限制,吊起也必须关闭代理
  11. push消息:push消息有最低版本要求,而且用户必须创建桌面图标才能收到
  12. 最后吐槽:文档很多使用地方写的很不详细,而且厂商有变动的地方开发者也无法第一时间得知,从而多浪费很多时间。

最后,希望快应用能越来也好吧,自己技术也能越来越进步。

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章