博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Vue2实现的仿手机QQapp(支持对话功能,滑动删除....)—— 聊聊开发过程中踩到的一些坑与解决方案,以及个人感悟...
阅读量:6901 次
发布时间:2019-06-27

本文共 1630 字,大约阅读时间需要 5 分钟。

使用Vue2进行的仿手机QQ的webapp的制作,在ui上,参考了设计师kaokao的作品,作品由个人独立开发,源码中进行了详细的注释。 由于自己也是初学Vue2,所以注释写的不够精简,请见谅。

目前已实现: 整体数据的流动,接入聊天机器人,信息左滑删除,个人信息侧边栏, 搜索好友功能.....

项目地址:

动态图预览

侧边栏与个人主页

侧边栏与个人主页

滑动删除

滑动删除

对话功能

对话功能

搜索

搜索

整体ui

整体ui


以上是项目介绍,后面就进入正题,聊聊开发过程中踩到的一些坑,解决方案,以及个人感悟

关于踩到的坑与解决方案

一像素

解决方案有好几种,本来想着用css3缩放解决,后来仔细看了看效果,突然发现用不到1px边线,于是不了了之。

布局,兼容性

主要采用flex布局,参考阮一峰老师的。

单位

由于懒,所以使用了 vhvw,感觉吧,兼容性好像也没啥大问题。

关于输如文字时,软键盘弹出,遮挡底部输入框

使用scrollIntoView()方法,在输入框获得焦点时,设置定时器执行scrollIntoView(false),输入框失去焦点时清除定时器,完美解决。

关于聊天时对话内容保持在底部

不知道为啥,scrollTop的值一直是0,断了我想用js控制内容滚动的想法。于是索性在最下方设置了一锚点,在每次输入信息或者组件更新时,模拟点击锚点,这样就使聊天界面一直保持在最下方了......方法虽然粗暴,但奈何实用,并且暂时未找到scrollTop一直为0的原因(。

关于接入聊天机器人api遇到的跨域问题

起初,天真的以为官方应该提供了jsonp用的接口,然而没有找到。但是问题总是要解决的,功能也得实现,于是就在webpack的零时Dev中写了向机器人api的请求,把webapp起的零时服务器做中转层,然后前端代码直接请求webapp服务器提供的api,这样就完美的避开的跨域限制。(项目中用的聊天机器人是图灵机器人,有需要的自行百度)

关于监听for循环渲染dom内容是否完成

产生这个需求后,找到了一个方法,nextTick()在下次 DOM 更新循环结束之后执行延迟回调,然后发现在遇到的场景中好像,并没有产生应有的效果,可能是我代码错误,所以为了偷懒,就暂时设置了一个延时一秒执行的定时器,后续会做出修改。

关于左滑删除

把父级宽度设置为120%然后左右浮动内容,监听touchstarttouchmove事件

关于Vue不能检测利用索引直接修改的数组中值的变动

在看教程时对于这部分,没有太过在意,以至于后面实际写的时候,不知道哪里出了问题,于是回头翻万能的教程,发现,竟然不能用索引更改数组中的值,于是恍然大悟....得用splice()

关于ui的一些吐槽

项目中使用的ui是muse-ui,使用它纯粹是因为感觉跟设计稿挺搭,在此之前没有使用过(之前使用的是饿了吗的轮子),实际使用时发现一些小问题,ui的很多接口没有提供,例如,想在输入框上设置事件,想要对avatar组件中的图片设置懒加载等...。以至于想要去修改ui组件,另外muse提供了单组件的加载,但是由于是个人作品。主要做测试用,所以就直接整体引入了。

还有些其他零零碎碎的大小问题,反正这俩天谷歌百度频率明显有了增加

个人感悟

主要是对vuex理解了很多,在此之前,只写过一些简单的小例子,当时认为,vuex(Flux 架构)好像有种多此一举的感觉,但是在这个个人项目中,由于数据量的增加导致了复杂度的几何度增加,使得Vuex成为了我的必需品,难以想象如果组件间的数据通信还是使用父子间通信,或者设置一个数据中心的方法,会是怎么的混乱。

Flux 架构就像眼镜:您自会知道什么时候需要它。

最后,由于作者只是个新手,所以欢迎交流,写这篇文章的内容也是希望能够帮助到一些,正在学习vue中的小伙伴们,另外希望给个Star,作为第一次写较复杂的个人demo的我来说,还是比较希望得到大家的认可。

项目地址:

转载地址:http://ywvdl.baihongyu.com/

你可能感兴趣的文章
Xcode +SVN
查看>>
设置界面分析
查看>>
SQL中DateTime转换成Varchar样式
查看>>
java.util.AbstractList
查看>>
几个常见用于解决nginx负载均衡的session共享问题的办法
查看>>
setTimeOut、setInterval与clearInterval函数
查看>>
Appium原理及版本变化细节
查看>>
iphone ios 用xcode4.2开发 访问web service的功能
查看>>
Visual Studio 代码折叠快捷键(摘要)
查看>>
正则【备用】
查看>>
FeatureSelectors
查看>>
数据库防火墙DBShield安装
查看>>
sudo with no password
查看>>
Windows 局域网ping获取设备IP
查看>>
使用蓝图来扩展编辑器
查看>>
USACO题目——Transformations
查看>>
除了 UCAN 发布的鹿班和普惠体,这些设计工具也来自阿里
查看>>
转载----Python正则表达式指南
查看>>
.Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
查看>>
HDU 1394 Minimum Inversion Number 线段树
查看>>