vue整合uniapp_uni-app仿微信App界面|vue+uniapp聊天室|仿微信朋友圈
项目简介
基于uni-app+vue+vuex+uniPop+swiper等技术开发的仿微信聊天室uniapp-chatroom项目,类似vue及小程序api语法使开发更加方便,实现了发送图文消息、表情(gif动图),图片预览、地图位置、红包、仿微信朋友圈等功能
效果图
在H5 / 小程序 / App端测试效果如下 (后续大图统一展示App端)
技术实现
编辑器:HBuilder X
技术框架:uni-app + vue
状态管理:Vuex
iconfont图标:阿里字体图标库
自定义导航栏 + 底部Tabbar
弹窗组件:uniPop(基于uni-app封装模态弹窗)
测试环境:H5端 + 小程序 + App端(三端均兼容)
高德地图:vue-amap
引入公共组件及样式
import Vue from 'vue'
import App from './App'
// >>>引入css
import './assets/fonts/iconfont.css'
import './assets/css/reset.css'
import './assets/css/layout.css'
// >>>引入状态管理
import store from './store'
Vue.prototype.$store = store
// >>>引入公共组件
import headerBar from './components/header/header.vue'
import tabBar from './components/tabbar/tabbar.vue'
import popupWindow from './components/popupWindow.vue'
Vue.component('header-bar', headerBar)
Vue.component('tab-bar', tabBar)
Vue.component('popup-window', popupWindow)
// >>>引入uniPop弹窗组件
import uniPop from './components/uniPop/uniPop.vue'
Vue.component('uni-pop', uniPop)
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
uniapp+vuex实现登录拦截
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
user: uni.getStorageSync('user'),
token: uni.getStorageSync('token'),
},
mutations: {
// 存储token
SET_TOKEN(state, data) {
state.token = data
uni.setStorageSync('token', data)
},
// 存储用户名
SET_USER(state, data) {
state.user = data
uni.setStorageSync('user', data)
},
...
},
})
import { mapState, mapMutations } from 'vuex'
import util from '../../utils/util.js'
export default {
data() {
return {
formObj: {},
}
},
computed: {
...mapState(['user', 'token'])
},
mounted() {
// 判断是否有登录
if(this.user){
uni.redirectTo({url: '/pages/index/index'})
}
},
methods: {
// 提交表单
handleSubmit(e) {
...
}
}
}
uniapp实现朋友圈功能
如何实现微信朋友圈页面向下滚动,顶部导航栏由透明变背景色,通过onPageScroll函数实现自定义导航上下滑动自动调整导航栏的透明度
/**
* @tpl 朋友圈模板
*/
...
export default {
data() {
return {
headerBarBackground: 'transparent'
}
},
onPageScroll : function(e) {
// console.log("滚动距离为:" + e.scrollTop);
this.headerBarBackground = 'rgba(65,168,99,'+e.scrollTop / 200+')'
},
methods: {
...
}
}
uniapp滚动至聊天页面底部
在uni-app将聊天信息滚动到底部有些不好实现,可以借助scroll-view组件scroll-into-view属性,不过只能设置一次,不能动态设置。
只能通过动态改变scroll-top来实现
uni-app通过判断聊天内容高度和scroll-view高度的大小设置滚动距离
xxx
xxx
xxx
...
export default {
data() {
return {
scrollTop: 0,
...
}
},
mounted() {
this.scrollToBottom()
},
updated() {
this.scrollToBottom()
},
methods: {
// 滚动至聊天底部
scrollToBottom(t) {
let that = this
let query = uni.createSelectorQuery()
query.select('#scrollview').boundingClientRect()
query.select('#msglistview').boundingClientRect()
query.exec((res) => {
// console.log(res)
if(res[1].height > res[0].height){
that.scrollTop = res[1].height - res[0].height
}
})
},
...
}
}
基于uniapp开发聊天室的介绍就到这里,后续继续为大家分享实战项目,希望多多支持。
vue整合uniapp_uni-app仿微信App界面|vue+uniapp聊天室|仿微信朋友圈相关推荐
- IM即时通信多房间聊天室仿微信聊天(二)
IM即时通信多房间聊天室仿微信聊天(服务器自定义处理客户端消息) 在IM即时通信多房间聊天室仿微信聊天(一)中我们已经搭建了基本的通信架构,接下来重点就是如何在自己的后台接收并处理客户端用户的消息了 ...
- 【仿写酷界面】【HenCoder】仿小米运动的运动记录界面
MISportsConnectWidget 项目地址:sickworm/MISportsConnectWidget 简介:[仿写酷界面][HenCoder]仿小米运动的运动记录界面 更多:作者 ...
- 微信登录画面_微信登录界面的地球变了_微信登录界面首变真相
细心的小伙伴发现在启动微信的时候,那个经典的一个小人剪影面对着地球的画面开始发生了一些变化,似乎云层变得更为清晰细致了.微信登录界面6年来首变化,那么为何改变来的如此突然呢,下面小编就分享给大家! 手 ...
- IM即时通信多房间聊天室仿微信聊天(四)
聊天记录的保存和展示 IM即时通信多房间聊天室仿微信聊天(一) IM即时通信多房间聊天室仿微信聊天(二) IM即时通信多房间聊天室仿微信聊天(三) 聊天消息的保存我们直接在服务端接收到客户端发送的消息 ...
- 微信iOS 7.0.9版本更新:今天的朋友圈是一片欢乐的海洋!
今天下午微信朋友圈又热闹起来了,因为微信再一次更新了.这次更新的版本虽然只是在iOS版升级了0.0.1,但也足以在朋友圈引起不小的动静. 12月23日,微信发布iOS 7.0.9版本更新,支持发消息时 ...
- 微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码 | 极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 张红月 出品 | CSDN(ID:CSDNnews ...
- 极客日报第84期:微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码
一分钟速览新闻点! 微信Mac版更新:在电脑上刷朋友圈了 领英暂停中国境内新用户注册 或因内容和服务不合规 复旦自主研发显示织物:衣服也可充当显示器 IDC:预计2021年PC出货量将超3亿台 王兴: ...
- 微信官方数据披露:哪些文章更受朋友圈欢迎
拥有4.68亿月活跃用户的微信,早已成为国内媒体和自媒体信息传播的重点社交渠道之一.但你知道用户喜欢在微信上阅读哪些文章,又喜欢如何阅读吗?今天为你揭开几个关键数据. 用户每天在微信平台上平均阅读5. ...
- 微信小程序实现websocket聊天室
在微信小程序中建立聊天室. 目录 一.在web项目中导入javax.websocket-api-1.0-rc4.jar包 二.编写支持websocket的controller类 三.在微信小程序中编写 ...
最新文章
- 博图只能通过地址相同设备找到plc_小白求教:博途v13无法连接s7-1200,显示在网络上未找到任何设备...
- Linux 进程状态【转】
- 硬盘和显卡的访问与控制(三)(含多彩的Hello)——《x86汇编语言:从实模式到保护模式》读书笔记03
- 今天 ,给大家变个魔术!!!
- LeetCode 648. 单词替换(Trie树)
- java byte to long_java 中怎样将 bytes 转换为 long 类型?
- windows 批处理自学教程 基础篇
- 数据结构之内部排序三
- 隐藏画质代码_和平精英120帧率代码是什么?隐藏的120帧率代码更改方法技巧
- 比较使用LUT和不使用LUT的颜色空间转换的处理时间差异
- 一个简单的js作用域题目(原创)
- 计算机组成辅存的概念,计算机组成原理概念
- OpenCV — Otsu 算法
- n1装linux系统升级,N1 降级刷机救砖总结
- 批量/去掉office 2010 Word中标题前的黑点
- vue+Gantt如何在vue中使用甘特图,绘制任务进度
- HIVE SQL分位数percentile使用方法案例
- 硬件:Nand Flash、Nor Flash
- 目标检测任务超大图像的切图实现
- ppt里面如何插入页脚
热门文章
- 常见的数学建模比赛汇总(参考资料)
- 机器翻译是计算机语言学的一个分支,语言学知识在机器翻译发展领域的应用
- c 语言的产生及发展过程,在意识的产生和发展过程中,起决定性作用的是( ) A.人脑B.语言C.物质D.劳动 - 赏学吧...
- 自定义注解以及通过aop实现注解横切(日志)
- 广域网协议(HDLC协议和PPP协议)
- Android Architecture Components
- 总结常见的违背Rest原则的接口设计做法
- easy_x是实现钟表
- ec11编码器c语言程序,EC11旋转编码器电路和程序
- 逆波兰计算器(含完整版)