vue3.0仿制QQ+微信PC端|vue3+element-plus实战聊天室|vue3网页实例

Image

一、项目介绍

使用vue3全家桶vue3.0.5+vuex4+vue-router@4 + elementPlus+v3scroll+v3layer等技术仿制QQ/微信网页端界面聊天实战项目。支持图文消息、视频/图片预览、网址链接查看、拖拽发送图片、红包/朋友圈等功能。

Image

使用技术

  • MVVM 框架:Vue.js 3.0.5
  • 状态管理:Vuex4
  • 路由管理:Vue-router@4
  • UI 组件库:elementPlus (饿了么 pc 端 vue3 组件库)
  • 弹窗组件:v3layer (基于 vue3 自定义弹窗组件)
  • 滚动条组件:v3scroll (基于 vue3 自定义滚动条组件)
  • 字体图标:阿里 iconfont 图标
  • 环境配置:node.js + npm/yarn

Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image

目录结构

Image

vue3虚拟滚动条组件

项目中所有页面均是采用统一滚动条,目的是保持页面效果一致。
Image
之前有过一篇分享文章,感兴趣的话大家可以去看看。
vue3.x自定义pc端美化滚动条组件

vue3桌面端弹窗组件

v3layer 基于vue3开发的PC桌面端自定义弹窗组件。 支持多达30+种参数,支持拖拽、缩放、最大化、全屏及自定义样式和置顶等功能。
Image
vue3.x自定义pc桌面端全局弹窗组件

app.vue主模板布局

<div :class="['vui__wrapper', store.state.isWinMaximize&&'maximize']">
  <div class="vui__board flexbox">
    <div class="flex1 flexbox">
      <!-- 右上角按钮 -->
      <WinBar v-if="!route.meta.hideWinBar" />

      <!-- 侧边栏 -->
      <SideBar v-if="!route.meta.hideSideBar" class="nt__sidebar flexbox flex-col" />

      <!-- 中间栏 -->
      <Middle v-show="!route.meta.hideMiddle" />

      <!-- 主内容区 -->
      <router-view class="nt__mainbox flex1 flexbox flex-col"></router-view>
    </div>
  </div>
</div>

毛玻璃效果实现

项目中的背景采用整体svg filter虚化效果,凸显聊天区域。

<!-- //毛玻璃效果 -->
<div class="vui__bgblur">
  <svg width="100%" height="100%" class="blur-svg" viewBox="0 0 1920 875" preserveAspectRatio="none">
    <filter id="blur_mkvvpnf"><feGaussianBlur in="SourceGraphic" stdDeviation="50"></feGaussianBlur></filter>
    <image :xlink:href="store.state.skin" x="0" y="0" width="100%" height="100%" externalResourcesRequired="true" xmlns:xlink="http://www.w3.org/1999/xlink" style="filter:url(#blur_mkvvpnf)" preserveAspectRatio="none"></image>
  </svg>
  <div class="blur-cover"></div>
</div>

图片+视频预览

图片预览功能使用的是element-plus组件库中的image组件。

<el-image class="img__pic" 
    :src="item.imgsrc"
    :preview-src-list="[item.imgsrc]"
    hide-on-click-modal
/>

视频预览则是使用v3layer弹窗来实现的。

Image

<!-- 视频播放器 -->
<v3-layer v-model="isShowVideoPlayer"
    title="<i class='iconfont icon-bofang'></i> 视频预览"
    layerStyle="background:#f9f9f9"
    opacity=".2"
    :area="['550px', '450px']"
    xclose
    resize
    :maximize="true"
>
    <video class="vplayer" ref="playerRef" autoplay preload="auto" controls
        :src="videoList.videosrc"
        :poster="videoList.imgsrc"
        x5-video-player-fullscreen="true"
        webkit-playsinline="true"
        x-webkit-airplay="true"
        playsinline="true"
        x5-playsinline
    />
</v3-layer>

网址链接查看

项目中点击聊天网址链接会弹窗显示链接内容。
Image

const handleMsgClicked = (e) => {
    let target = e.target
    // 链接
    if(target.tagName === 'A') {
        e.preventDefault()
        // console.log('触发点击链接事件!')

        v3layer({
            type: 'iframe',
            title: '<i class="iconfont icon-link"></i> 网址预览',
            content: target.href,
            opacity: .2,
            area: ['860px', '600px'],
            xclose: true,
            resize: true,
            maximize: true
        })
    }
    // 图片
    if (target.tagName === 'IMG' && target.classList.contains('img-view')) {
        // ...
    }
}

vue3实现60s倒计时+表单验证

/**
 * @Desc     vue3.0注册表单验证
 * @Time     andy by 2021-01
 * @About    Q:282310962  wx:xy190310
 */
<script>
import { reactive, toRefs, inject, getCurrentInstance } from 'vue'
export default {
    components: {},
    setup() {
        const { ctx } = getCurrentInstance()
        const v3layer = inject('v3layer')
        const utils = inject('utils')

        const formObj = reactive({})
        const data = reactive({
            vcodeText: '获取验证码',
            disabled: false,
            time: 0,
        })

        const VTips = (content) => {
            v3layer({
                content: content, layerStyle: 'background:#ff5151;color:#fff;', time: 2
            })
        }

        const handleSubmit = () => {
            if(!formObj.tel){
                VTips('手机号不能为空!')
            }else if(!utils.checkTel(formObj.tel)){
                VTips('手机号格式不正确!')
            }else if(!formObj.pwd){
                VTips('密码不能为空!')
            }else if(!formObj.vcode){
                VTips('验证码不能为空!')
            }else{
                ctx.$store.commit('SET_TOKEN', utils.setToken());
                ctx.$store.commit('SET_USER', formObj.tel);

                // ...
            }
        }

        // 60s倒计时
        const handleVcode = () => {
            if(!formObj.tel) {
                VTips('手机号不能为空!')
            }else if(!utils.checkTel(formObj.tel)) {
                VTips('手机号格式不正确!')
            }else {
                data.time = 60
                data.disabled = true
                countDown()
            }
        }
        const countDown = () => {
            if(data.time > 0) {
                data.vcodeText = '获取验证码('+ data.time +')'
                data.time--
                setTimeout(countDown, 1000)
            }else{
                data.vcodeText = '获取验证码'
                data.time = 0
                data.disabled = false
            }
        }

        return {
            formObj,
            ...toRefs(data),
            handleSubmit,
            handleVcode
        }
    }
}
</script>

Okay,以上就是vue3.x+elementPlus实战聊天项目的介绍,希望对大家有所帮助哈!✍️😃

nuxt.js仿微信App通讯聊天|vue+nuxt聊天|仿微信界面

Image

本作品采用《CC 协议》,转载必须注明作者和本文链接
本文为原创文章,未经作者允许不得转载,欢迎大家一起交流 QQ(282310962) wx(xy190310)
本帖由系统于 5年前 自动加精
Image
讨论数量: 4

赞一个 :+1: :+1: :+1: :+1: :+1:

5年前 评论

@Seale_极束梦想 感谢支持哈! :facepunch: :grinning:

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
104
粉丝
54
喜欢
113
收藏
62
排名:339
访问:2.8 万
私信
所有博文
博客标签
react
1
angular
1
react仿微信
2
react实战开发
2
react+redux
1
react网页聊天
2
angular仿微信
1
angular聊天室
1
angular+node聊天
1
h5仿微信
1
仿微信语音
1
仿微信界面
1
RN弹窗
1
react-native自定义弹窗
1
react-native弹窗
1
React Native
1
reactNative仿微信
1
RN仿微信聊天
1
ReactNative朋友圈
1
uniapp仿微信
1
uniapp聊天室
2
uniapp聊天App
1
uni-app+vue实例
1
uni-app即时通讯
1
uniapp直播
1
uni-app仿抖音
1
uniapp仿陌陌
1
uni-app小视频
1
taro仿微信
1
taro聊天室
1
taro仿微信界面
1
taro+react聊天APP
1
taro即时通讯
1
electron+vue
1
electron-vue仿微信
1
electron聊天
1
electron实例
1
flutter实例
1
flutter仿微信
1
flutter+dart聊天
1
flutter聊天室
1
flutter聊天界面
1
vue自定义弹窗
1
vue全局对话框
1
vue长按弹出框
1
vue右键弹层
1
nuxt对话框
1
vue仿微信弹窗
1
vue仿探探
1
vue仿Tinder
1
vue卡片堆叠
1
vue翻牌滑动
1
nuxt仿探探
1
nuxt聊天室
1
nuxt仿微信
1
nuxt即时聊天
1
vue+nuxt聊天实例
1
nuxt.js朋友圈
1
vue.js自定义对话框
1
vue pc端弹窗
1
vue.js桌面端模态框
1
vue弹窗组件
1
vue仿layer
1
vue.js自定义滚动条
1
vue虚拟滚动条
1
vue美化滚动条
1
vue仿饿了么滚动条
1
Vue-Scrollbar
1
react.js弹窗示例
1
react桌面端弹框
1
react.js自定义对话框
1
react pc自定义弹窗
1
react全局弹框
1
vue3.0自定义组件
2
vue3弹框
1
vue3.x对话框
1
vue3.0弹窗
1
vue3.0实例
1
vue3.0聊天室
1
vue3.0仿微信
2
vue3聊天模板
2
vue3+vant3实战开发
1
vue3.x案例
1
vue3聊天实例
1
vue3.0仿QQ
1
vue3.x实战聊天
1
vue3网页聊天
2
vue3.0仿抖音app
1
vue3短视频
1
vue3.x小视频
1
vue3.0直播实例
1
vue3+vite2+vant3实战
1
vue3跨端开发
1
electron仿QQ
1
electron打包
1
electron聊天室
1
electron仿微信
1
electron仿抖音
1
electron短视频
1
electron直播
1
vite2+electron12
1
vite2+vue3.x+swiper
1
vue3+vite.js+vant3
1
vue3后台系统
1
Electron管理系统
1
vite2+electron后台
1
electron12权限管理
1
electron桌面端后台
1
vue3桌面管理
1
vite2+electron13
1
electron仿mac桌面
1
electron桌面管理
1
vite2桌面应用
1
uniapp短视频
2
uniapp仿抖音
1
uni-app直播
1
uniapp后台
1
uni-app+uview后台系统
1
svelte.js实战开发
1
svelte3仿微信
1
svelte+svelteKit聊天室
1
svelte聊天实例
2
svelte朋友圈
1
svelte.js仿微信
1
svelte.js网页聊天
1
svelte-ui-admin
1
svelte-admin后台管理
1
svelte管理系统
1
tauri桌面应用
1
tauri+vue3
1
vite3+tauri
1
tauri聊天程序
1
tauri仿微信
1
vue3后台管理
1
vite.js管理系统
1
vue3+vite4
1
vite4+pinia
1
vue3+pinia2
1
vue3-chatgpt
2
vite-chatgpt
1
chatgpt-mobile
1
electron-chatgpt
1
electron+vite4+vue3
1
electron25-vue3
1
chatgpt-vite
1
uni-chatgpt
1
uniapp+vue3+pinia
4
vite+uniapp
2
chatgpt-uniapp
1
tauri-admin
1
tauri+rust+vue3
1
tauri后台管理
1
tauri-vite
1
tauri+vue3桌面端后台
1
react18 hooks
2
react18+arco
2
react18+zustand
1
react18-webchat
1
react18-admin
1
react-arco-admin
1
react-vite-admin
1
react18后台管理
1
electron-mateos
1
electron27+react18
1
electron-react-macos
1
electron桌面os
1
react-macos
1
uniapp+vue3直播
1
flutter3-chat
3
flutter3仿微信
3
flutter3聊天
2
flutter3+dart3
1
flutter3桌面端开发
1
flutter3-douyin
1
flutter3仿抖音
1
flutter3短视频
2
flutter3直播
1
flutter3-macos
2
flutter3-osx
2
flutter3桌面os
2
flutter3仿macOS
3
uniapp+vue3聊天
1
uniapp+vue3仿微信
3
uniapp+vue3聊天app
1
uniapp-vue3-wchat
1
uni-vue3-os
1
uniapp+vue3手机后台
2
uniapp-admin
1
uniapp+vue3仿ios桌面
1
uniapp+vite5后台管理
1
flutter3-osadmin
1
flutter3手机后台
1
vite-vue3-chat
1
vite-webchat
2
vue3-chat聊天
1
vite5仿微信
1
electron31+vue3聊天室
1
vite5+electron31仿微信
1
electron31-vite5-wechat聊天
1
electron31聊天exe
1
vue3+electron桌面聊天
1
vue3-webos
2
vue3-macos
1
vue3网页版os
1
vite-os
1
electron31-vue3-admin
1
vite5-electron31-admin
1
vue3+electron31后台系统
1
electron31+vite5桌面端后台
1
electron31轻量级后台
1
electron32-os
1
vue3+electron32桌面os
1
electron32-macos
1
electron32-winos
1
electron-osx
1
tauri2.0
2
tauri2+vue3仿微信
1
tauri2+vite.js聊天
1
tauri2.0+vue3客户端聊天
1
HarmonyOS
1
tauri2-admin
1
tauri2-vue3-admin
1
vue3+tauri2桌面后台
1
tauri2+vite后台系统
1
harmony-chat
1
鸿蒙仿微信
1
鸿蒙聊天app
1
uniapp+vue3酒店预订
1
vue3+uniapp预约酒店
1
uniapp酒店预订
1
uniapp仿携程
1
uniapp仿同程
1
vue3酒店预订
1
tauri2-os
2
tauri2.0-vue3-os
1
tauri2+vue3桌面os
1
tauri2-macos
1
tauri2-winos
1
tauri2.0仿macos
1
tauri2+vite桌面端os
1
flutter3直播app
1
flutter3仿抖音app
2
flutter3短视频直播
1
flutter3聊天室
1
flutter3仿携程
1
flutter3-trip
1
flutter3酒店预订
1
flutter3预约酒店app
1
flutter3旅行酒店app
1
vue3+deepseek
2
vue3-deepseek-chat
2
vue3仿deepseek流式ai
3
vue3智能ai聊天
1
vue3+deepseek-v3
1
vue3网页版ai
1
vue3-web-deepseek
2
vue3.5-webseek
1
electron35+deepseek
1
electron35仿deepseek
1
electron35仿豆包AI
1
electron35桌面端ai
1
electron35-vue3ai
1
uniapp-deepseek
1
uni-vue3-deepseek
1
uniapp+vue3跨端流式ai
1
uniapp仿deepseek
2
uniapp小程序流式ai
1
flutter3-deepseek
1
flutter3仿deepseek
1
flutter3跨平台ai
2
flutter3+dio流式
1
flutter3流式输出ai
1
flutter3-winseek
1
flutter3桌面端ai
1
flutter3客户端ai
1
flutter3+deepseek
2
flutter3电脑版ai
1
flutter3+dio流式输出
1
flutter3流式ai
2
tauri2-deepseek
1
tauri2+deepseek
1
tauri2桌面端ai
1
tauri2流式输出ai
1
tauri2-vue3-ai
1
uniapp短视频+聊天+直播
1
uniapp+vue3仿抖音
1
uniapp直播商城
1
flutter3仿微信app
1
flutter3聊天app
1
flutter3朋友圈
1
flutter3客户端聊天
1
flutter3仿微信桌面端
1
flutter3电脑端聊天
1
flutter3聊天exe
1
flutter3桌面端os
1
flutter3-winos
1
flutter3管理os
1
uniapp-vue3-chat
1
uniapp+vue3聊天室
1
uniapp-wechat
1
uniapp跨端聊天
1
uniapp-os-admin
1
uni-vue3-osadmin
1
vue3-uni-oa
1
uniapp手机版oa
1
vue3网页版聊天
1
vue3-webchat
1
vite7+vue3网页聊天室
1
electron38仿微信
1
vue3+electron38桌面端聊天
2
electron38+vite7客户端聊天
1
electron38聊天系统
1
Electron38+Vue3聊天软件
1
vite7+vue3网页版os
1
vite7-webos
1
vite7仿macos
1
vue3网页os系统
1
electron38-vue3admin
1
vite7+electron38后台
1
electron38-vite7-admin
1
electron38电脑端后台管理
1
electron38-vue3-os
1
vue3+electron38桌面os
1
vite7+electron38客户端os
1
vite7-electron38-os
1
electron38+vite7仿macos
1
tauri2仿微信
1
tauri2+vue3聊天室
1
vite7+tauri2客户端聊天
1
vue3-tauri2-winchat
1
tauri2+vite7桌面端仿微信
1
tauri2-vite7-admin
1
vue3+tauri2桌面端后台
1
tauri2-vue3admin
1
vite7+tauri2客户端后台系统
1
tauri2+vue3+element-plus后台
1
uniapp+vue3仿携程
1
vue3+uniapp酒店预订
1
uniapp-vue3-hotel
1
unapp+vue3酒店模板
1
vite+uniapp酒店预订系统
1
tauri2.9+vue3仿macos
1
vue3-tauri2-os
1
tauri2+vite7桌面版os
1
vite-tauri2-os
1
tauri2+vite7电脑端os
1
flutter3.38短视频
1
flutter3.38直播app
1
flutter3.38聊天app
1
Flutter3短视频+直播+聊天
1
flutter3.38仿抖音app
1
vite7+deepseek
2
vue3流式输出ai
1
vue3-mobile-deepseek
1
vue3-webai
2
vue3仿deepseek-r1
1
electron39-vue3-ai
1
electron39+deepseek
1
electron39+vue3桌面端ai
1
electron-vue3-deepseek
1
vite-electron-ai
1
uniapp跨端ai
1
uniapp小程序端ai
1
uniapp+vue3流式ai
1
uniapp+vue3多端ai
1
vue3.5聊天室
1
vue3-chatroom
1
vue3-wechat
1
vite-chatroom
1
vite-wechat
1
vite7+vue3聊天室
1
vue3仿微信朋友圈
1
tauri2.10+vue3跨端ai
1
tauri2.10+vite桌面端ai
1
tauri2-vue3-deepseek
1
tauri2接入deepseek桌面ai
1
tauri2.10客户端流式ai
1
vite8.0
2
vite8-webai
1
vite8+deepseek
2
vue3-deepseek-webai
1
vite8+vue3网页版ai
1
electron41客户端ai
1
vue3+electron41桌面端ai
1
Electron41+Vite8流式ai
1
Electron智能ai
1
flutter3.41-ai
2
flutter3.41-win-ai
1
flutter3.41桌面端ai
1
flutter3.41客户端ai
1
flutter3接入deepseek
1
flutter3流式ai系统
1
flutter3仿飞猪app
1
flutter3仿携程app
1
flutter3酒店预订app
1
flutter3旅行app
1
flutter3.41-winchat
1
flutter3.41客户端聊天
1
Flutter3桌面端聊天
2
Flutter3聊天系统
1
flutter3.41实战抖音
1
flutter3.41短视频+直播
1
uniapp跨三端ai
1
deepseek-v4-flash
1
deepseek-v4-pro
1
DeepSeek V4
1
uniapp小程序ai
1
flutter3.41桌面端os
1
flutter3.41-macos
1
vite8+vue3后台
1
vite8-vue3-admin
1
vite8-webadmin
1
vite8+vue3网页版os
1
vite8-vue3-webos
1
vue3-web-os
1
vite+vue3桌面os系统
1
react19
1
react19-admin
1
vite8+react19后台系统
1
react19后台模板
1