Vue仿PC微信

前言

学习Vue也有一段时间了,作为一个热爱代码的码农,在感受Vue的魔性之后,也开始迫不及待去搞搞事情。本文采用(vue+vue-router+vuex+es6+stylus) 来实现一个仿PC端微信的小demo,还使用了一个智能api,实现智能对话。欢迎大家对鄙人提出宝贵意见,相互学习讨论,一起进步。

demo地址

  • 本demo做的是PC版,建议使用电脑预览,另外github加载有些缓慢,请耐心等待
  • 预览地址
  • 源码地址 (欢迎点赞 <( ̄︶ ̄)>)

demo描述

页面

分为三个页面,分别是好友页面,聊天页面,还有个人信息(一波小广告。。。)

功能

  • 聊天记录将会被保存到localStorage中,刷新之后记录依然存在。
  • 在搜索栏可以输入你想搜索的值,列表会过滤出对应的好友。
  • 聊天列表负责展示可聊天的好友。包括最后一条信息的时间和内容。点击不同的好友对话可以与不同的好友发送信息
  • 在输入框中可以选择表情。发送完信息之后,聊天列表中会对最后一条信息的内容时间进行相应改变。
  • 可以在好友列表中选择好友并给他发送信息,聊天列表中没有该好友会添加该好友对话,已经存在的话会自动选择到选择的好友对话。
  • 使用了一个api,会根据发送的信息,返回相应的对话。达到智能聊天的效果。( 已经在存好友列表中,叫做机器人 )

由于微信pc页面不多,效果图不是特别明显,最好可以进预览地址体验一下下。


1.png

2.png

3.png

4.png

5.png

难点和问题

虽说在这里使用vuex有点大材小用,但是本宝宝面对各组件之间状态传递,多层嵌套的组件传参,毅然决然决定使用vuex进行数据管理,把所有事件和状态存储在store对象中,在组件中通过计算属性获得事件,因此就有了实时性。
由于接触vuex时间不久,处于边学边用的状态,踩了不少坑,总算是扛过来了。
还学到一些小技巧,类似发送消息,超出页面的时候要滑倒最底下看最后一条信息,让容器的滑动垂直位置等于其整个高度。
this.$refs.list.scrollTop = this.$refs.list.scrollHeight
但是很多时候就会忽略掉一个异步问题,我就曾踩到这个坑,甚至开始怀疑是不是解决方法写错了,实际上只要在一个异步,就可以解决。
setTimeout(() => this.$refs.list.scrollTop = this.$refs.list.scrollHeight, 0)
还有一些包括表情转换啊。页面上的跳转不多,基本都是些逻辑,细节。

总结

虽然只是做了个小demo,但是我感觉收获还是很大的,锻炼了一些逻辑思维,很多知识点掌握得更加的牢固,对 vue vuex 的理解又更深了一些。我觉得对于向我们这种小白,实战上尽量找一些交互多,数据量不大的(个人建议)。但是我相信技术只会越学越好,东西也会越做越好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载 :OpenDiggawesome-github-vue 是由OpenDigg整理并维护的Vue相关开源项目库...
    果汁密码阅读 23,220评论 8 124
  • 文 | 木鸢 又是一个平常的周末,夏天夜短,清晨6点半左右窗外的天空已经大亮,虽然已经醒了,又想着毕竟是周末,怎么...
    木鸢的天空阅读 364评论 0 0
  • “西番莲纹”由明代传入至清代盛行,得到了广泛地应用,集合了中式的缠枝纹和西方莨苕叶雕刻各自的特点,形成了极富张力的...
    辽Atom阅读 7,194评论 0 4
  • 上一章 目录 下一章 吃过饭秦子瑞喝过茶便要走,朝阳便让朝白去送,朝白十分不乐意的随他出去。原以前送上车就完事...
    冬枝枝阅读 316评论 0 1
  • 大家好!我是小志,感谢关注小志思维,专注自媒体运营,引流变现,暴利网赚 对于常年混迹互联网的人来说,“截流”相信大...
    拾钱ST阅读 6,077评论 0 0