uniapp 即时通讯_uni-App 仿微信 App 即时通讯|vue+uniapp 聊天
項目介紹
基于uni-app+vue+vuex+uniPop+swiper等技術開發仿微信App聊天室實戰項目,實現了發送消息、表情(gif動圖),圖片預覽、地圖位置、紅包、仿微信朋友圈等功能。
項目中用到的自定義頂部導航欄及自定義彈窗:
技術棧
編輯器:HBuilder X
技術框架:uni-app + vue
狀態管理:Vuex
iconfont圖標:阿里字體圖標庫
自定義導航欄 + 底部Tabbar
彈窗組件:uniPop(基于uni-app封裝模態彈窗)
測試環境:H5端 + 小程序 + App端(三端均兼容)
引入公共組件、樣式 main.js
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來實現。
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仿微信App聊天室介紹,后續會繼續為大家分享實戰項目~~ 😏😏
最后分享兩個最近實戰聊天項目,一起學習!!!
本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
本文為原創文章,未經作者允許不得轉載,歡迎大家一起交流 QQ(282310962) wx(xy190310)
總結
以上是生活随笔為你收集整理的uniapp 即时通讯_uni-App 仿微信 App 即时通讯|vue+uniapp 聊天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是递归?
- 下一篇: 高数——单调有界定理