项目简介

基于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聊天室|仿微信朋友圈相关推荐

  1. IM即时通信多房间聊天室仿微信聊天(二)

    IM即时通信多房间聊天室仿微信聊天(服务器自定义处理客户端消息) 在IM即时通信多房间聊天室仿微信聊天(一)中我们已经搭建了基本的通信架构,接下来重点就是如何在自己的后台接收并处理客户端用户的消息了 ...

  2. 【仿写酷界面】【HenCoder】仿小米运动的运动记录界面

    MISportsConnectWidget 项目地址:sickworm/MISportsConnectWidget  简介:[仿写酷界面][HenCoder]仿小米运动的运动记录界面 更多:作者    ...

  3. 微信登录画面_微信登录界面的地球变了_微信登录界面首变真相

    细心的小伙伴发现在启动微信的时候,那个经典的一个小人剪影面对着地球的画面开始发生了一些变化,似乎云层变得更为清晰细致了.微信登录界面6年来首变化,那么为何改变来的如此突然呢,下面小编就分享给大家! 手 ...

  4. IM即时通信多房间聊天室仿微信聊天(四)

    聊天记录的保存和展示 IM即时通信多房间聊天室仿微信聊天(一) IM即时通信多房间聊天室仿微信聊天(二) IM即时通信多房间聊天室仿微信聊天(三) 聊天消息的保存我们直接在服务端接收到客户端发送的消息 ...

  5. 微信iOS 7.0.9版本更新:今天的朋友圈是一片欢乐的海洋!

    今天下午微信朋友圈又热闹起来了,因为微信再一次更新了.这次更新的版本虽然只是在iOS版升级了0.0.1,但也足以在朋友圈引起不小的动静. 12月23日,微信发布iOS 7.0.9版本更新,支持发消息时 ...

  6. 微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码 | 极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 张红月 出品 | CSDN(ID:CSDNnews ...

  7. 极客日报第84期:微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码

    一分钟速览新闻点! 微信Mac版更新:在电脑上刷朋友圈了 领英暂停中国境内新用户注册 或因内容和服务不合规 复旦自主研发显示织物:衣服也可充当显示器 IDC:预计2021年PC出货量将超3亿台 王兴: ...

  8. 微信官方数据披露:哪些文章更受朋友圈欢迎

    拥有4.68亿月活跃用户的微信,早已成为国内媒体和自媒体信息传播的重点社交渠道之一.但你知道用户喜欢在微信上阅读哪些文章,又喜欢如何阅读吗?今天为你揭开几个关键数据. 用户每天在微信平台上平均阅读5. ...

  9. 微信小程序实现websocket聊天室

    在微信小程序中建立聊天室. 目录 一.在web项目中导入javax.websocket-api-1.0-rc4.jar包 二.编写支持websocket的controller类 三.在微信小程序中编写 ...

最新文章

  1. 博图只能通过地址相同设备找到plc_小白求教:博途v13无法连接s7-1200,显示在网络上未找到任何设备...
  2. Linux 进程状态【转】
  3. 硬盘和显卡的访问与控制(三)(含多彩的Hello)——《x86汇编语言:从实模式到保护模式》读书笔记03
  4. 今天 ,给大家变个魔术!!!
  5. LeetCode 648. 单词替换(Trie树)
  6. java byte to long_java 中怎样将 bytes 转换为 long 类型?
  7. windows 批处理自学教程 基础篇
  8. 数据结构之内部排序三
  9. 隐藏画质代码_和平精英120帧率代码是什么?隐藏的120帧率代码更改方法技巧
  10. 比较使用LUT和不使用LUT的颜色空间转换的处理时间差异
  11. 一个简单的js作用域题目(原创)
  12. 计算机组成辅存的概念,计算机组成原理概念
  13. OpenCV — Otsu 算法
  14. n1装linux系统升级,N1 降级刷机救砖总结
  15. 批量/去掉office 2010 Word中标题前的黑点
  16. vue+Gantt如何在vue中使用甘特图,绘制任务进度
  17. HIVE SQL分位数percentile使用方法案例
  18. 硬件:Nand Flash、Nor Flash
  19. 目标检测任务超大图像的切图实现
  20. ppt里面如何插入页脚

热门文章

  1. 常见的数学建模比赛汇总(参考资料)
  2. 机器翻译是计算机语言学的一个分支,语言学知识在机器翻译发展领域的应用
  3. c 语言的产生及发展过程,在意识的产生和发展过程中,起决定性作用的是( ) A.人脑B.语言C.物质D.劳动 - 赏学吧...
  4. 自定义注解以及通过aop实现注解横切(日志)
  5. 广域网协议(HDLC协议和PPP协议)
  6. Android Architecture Components
  7. 总结常见的违背Rest原则的接口设计做法
  8. easy_x是实现钟表
  9. ec11编码器c语言程序,EC11旋转编码器电路和程序
  10. 逆波兰计算器(含完整版)