vue整合uniapp_uni-app仿微信App界面|vue+uniapp聊天室|仿微信朋友圈

本文介绍了使用uni-app、vue和vuex构建的仿微信聊天室项目,包含图文消息、表情、地图、红包和朋友圈等功能。项目支持H5、小程序和App端,采用Vuex进行状态管理,利用uniPop实现弹窗组件,同时详细讲解了uni-app中实现朋友圈下拉变色和聊天室滚动至底部的技术实现。
摘要由CSDN通过智能技术生成

项目简介

基于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开发聊天室的介绍就到这里,后续继续为大家分享实战项目,希望多多支持。😏😏

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值