Vite7网页版聊天

Vite7网页版聊天

    正在检查是否收录...

最新研发vite7.1+vue3.5+element-plus仿微信网页版聊天vite7-webchat

vite-vue3-webchat

基于Vite7+Vue3+Pinia3+elementPlus实战仿微信界面网页端聊天模板。实现了

聊天、联系人、收藏、朋友圈、小视频、我的

等模块。支持消息+emo混排、光标位置插入gif动图、图片/视频预览、红包等功能。

012360截图20250904001027805

使用技术

  • 编辑器:Vscode
  • 技术框架:vite7.1+vue3.5+vue-router4.5+pinia3
  • UI组件库:element-plus^2.11.1 (饿了么网页端vue3组件库)
  • 状态管理:pinia^3.0.3
  • 地图插件:@amap/amap-jsapi-loader(高德地图组件)
  • 视频滑动:swiper^11.2.10
  • 富文本编辑器:wangeditor^4.7.15
  • 样式编译:sass^1.91.0
  • 构建工具:vite^7.1.2

018360截图20250904001549125

p2

p3

项目框架结构

vite-vue3-wechat项目使用 vite7 搭建项目模板,采用 vue3 setup 语法糖编码。

360截图20250905073642668

vite7-webchat聊天项目已经更新到我的原创作品集,感谢支持!

vite7+vue3.5+pinia3+element-plus仿微信网页版聊天

p7-1

入口文件main.js

import { createApp } from 'vue' import './style.scss' import App from './App.vue' // 引入组件库 import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import VEPlus from 've-plus' import 've-plus/dist/ve-plus.css' // 引入路由/状态管理 import Router from './router' import Pinia from './pinia' const app = createApp(App) app .use(ElementPlus) .use(VEPlus) .use(Router) .use(Pinia) .mount('#app')

p1

002360截图20250903225137409

002360截图20250903232544731

002360截图20250903232828291

003360截图20250903233033123

005360截图20250903233351971

005360截图20250903233712315

006360截图20250903234028419

006360截图20250903234425490

007360截图20250903234643243

007360截图20250903234843428

008360截图20250903235158733

009360截图20250903235252565

009360截图20250903235343197

010360截图20250903235718188

011360截图20250903235835045

011360截图20250903235921902

011360截图20250904000235421

011360截图20250904000428421

013360截图20250904001118030

014360截图20250904001148829

015360截图20250904001225078

016360截图20250904001335093

通用布局模板

项目整体布局结构分为

左侧菜单栏+侧边栏+右侧主内容区

三部分。

image

image

<script setup> import { useRoute } from 'vue-router' import { appState } from '@/pinia/modules/app' import MenuBar from './components/menubar/index.vue' import SideBar from './components/sidebar/index.vue' import Winbtn from './components/winbtn.vue' const route = useRoute() const appstate = appState() </script> <template> <div class="vu__container" :class="{'fullscreen': appstate.config.fullscreen}" :style="{'--themeSkin': appstate.config.skin}"> <div class="vu__layout flexbox flex-col"> <div class="vu__layout-body flex1 flexbox" @contextmenu.prevent> <!-- 菜单栏 --> <slot v-if="!route?.meta?.hideMenuBar" name="menubar"> <MenuBar /> </slot> <!-- 侧边栏 --> <div v-if="route?.meta?.showSideBar" class="vu__layout-sidebar flexbox" :class="{'hidden': appstate.config.collapsed}"> <aside class="vu__layout-sidebar__body flexbox flex-col"> <slot name="sidebar"> <SideBar /> </slot> </aside> </div> <!-- 主内容区 --> <div class="vu__layout-main flex1 flexbox flex-col"> <Winbtn v-if="!route?.meta?.hideWinBar" /> <router-view v-slot="{ Component, route }"> <keep-alive> <component :is="Component" :key="route.path" /> </keep-alive> </router-view> </div> </div> </div> </div> </template>

vue-router@4路由管理

image

import { createRouter, createWebHashHistory } from 'vue-router' import { authState } from '@/pinia/modules/auth' import Layout from '@/layouts/index.vue' // 批量导入路由 const modules = import.meta.glob('./modules/*.js', { eager: true }) console.log(modules) const patchRouters = Object.keys(modules).map(key => modules[key].default).flat() console.log(patchRouters) /** * meta配置 * @param meta.requireAuth 需登录验证页面 * @param meta.hideWinBar 隐藏右上角按钮组 * @param meta.hideMenuBar 隐藏菜单栏 * @param meta.showSideBar 显示侧边栏 * @param meta.canGoBack 是否可回退上一页 */ const routes = [ ...patchRouters, // 错误模块  { path: '/:pathMatch(.*)*', redirect: '/404', component: Layout, meta: { title: '404error', hideMenuBar: true, hideWinBar: true, }, children: [ { path: '404', component: () => import('@/views/error/404.vue'), } ] }, ] const router = createRouter({ history: createWebHashHistory(), routes, }) // 全局路由钩子拦截 router.beforeEach((to, from) => { const authstate = authState() if(to?.meta?.requireAuth && !authstate.authorization) { return { path: '/login' } } }) router.afterEach((to, from) => { // 阻止浏览器回退 if(to?.meta?.canGoBack == false && from.path != null) { history.pushState(history.state, '', document.URL) } }) router.onError(error => { console.warn('[Router Error]', error) }) export default router

vue3+pinia3状态管理

使用最新

Pinia3

状态管理工具。

image

/** * 状态管理Pinia * @author andy */ import { createPinia } from 'pinia' // 引入pinia持久化存储 import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' const pinia = createPinia() pinia.use(piniaPluginPersistedstate) export default pinia

vue3小视频模块

vite-webchat项目增加了短视频模块,支持上下滑动切换小视频。

image

底部mini播放进度条,采用

Slider

组件实现功能。支持

实时显示当前播放进度、拖拽到指定位置

<div class="vu__video-container"> <!-- tabs操作栏 --> <div class="vu__video-tabswrap flexbox"> <el-tabs v-model="activeName" class="vu__video-tabs"> <el-tab-pane label="关注" name="attention" /> <el-tab-pane label="推荐" name="recommend" /> </el-tabs> </div> <swiper-container class="vu__swiper" direction="vertical" :speed="150" :grabCursor="true" :mousewheel="{invert: true}" @swiperslidechange="onSlideChange" > <swiper-slide v-for="(item, index) in videoList" :key="index"> <!-- 视频层 --> <video class="vu__player" :id="'vuplayer-' + index" :src="https://www.cnblogs.com/xiaoyan2017/p/item.src" :poster="item.poster" loop preload="auto" :autoplay="index == currentVideo" webkit-playsinline="true" x5-video-player-type="h5-page" x5-video-player-fullscreen="true" playsinline @click="handleVideoClicked" > </video> <div v-if="!isPlaying" class="vu__player-btn" @click="handleVideoClicked"></div> <!-- 右侧操作栏 --> <div class="vu__video-toolbar"> ... </div> <!-- 底部信息区域 --> <div class="vu__video-footinfo flexbox flex-col"> <div class="name">@{{item.author}}</div> <div class="content">{{item.desc}}</div> </div> </swiper-slide> </swiper-container> <el-slider class="vu__video-progressbar" v-model="progressBar" @input="handleSlider" @change="handlePlay" /> <div v-if="isDraging" class="vu__video-duration">{{videoTime}} / {{videoDuration}}</div> </div>

vue3-webchat聊天模块

p7

聊天模块编辑器,支持多行文本输入、光标处插入gif图片、粘贴截图发送图片等功能。

image

image

<template> <!-- 顶部导航 --> ... <!-- 内容区 --> <div class="vu__layout-main__body"> <Scrollbar ref="scrollRef" autohide gap="2"> <!-- 渲染聊天内容 --> <div class="vu__chatview" @dragenter="handleDragEnter" @dragover="handleDragOver" @drop="handleDrop"> ... </div> </Scrollbar> </div> <!-- 底部操作栏 --> <div class="vu__footview"> <div class="vu__toolbar flexbox"> ... </div> <div class="vu__editor"> <Editor ref="editorRef" v-model="editorValue" @paste="handleEditorPaste" /> </div> <div class="vu__submit"> <button @click="handleSubmit">发送(S)</button> </div> </div> ... </template>

综上就是vue3+pinia3仿微信web版聊天系统的一些分享,希望对大家有所帮助哈~

附上几个最新实战项目

uniapp-vue3-os手机oa系统|uni-app+vue3跨三端os后台管理模板

最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】

Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板

最新研发flutter3.27+bitsdojo_window+getx客户端仿微信聊天Exe应用

最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】

Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板

vue3-webseek网页版AI问答|Vite6+DeepSeek+Arco流式ai聊天打字效果

flutter3-deepseek流式AI模板|Flutter3.27+Dio+DeepSeeek聊天ai助手

flutter3-dymall仿抖音直播商城|Flutter3.27短视频+直播+聊天App实例

Tauri2.0+Vite5聊天室|vue3+tauri2+element-plus仿微信|tauri聊天应用

Electron32-ViteOS桌面版os系统|vue3+electron+arco客户端OS管理模板

Electron31-Vue3Admin管理系统|vite5+electron+pinia桌面端后台Exe

360截图20241001102520710

 

  • 本文作者:WAP站长网
  • 本文链接: https://wapzz.net/post-27840.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.8W+
9
1
2
WAP站长官方

PHP Swoole/WebMan/Laravel Octane 等长驻进程框架内存泄露诊断与解决方案

上一篇

小红书市集是对多样新需求的一种有效回应

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单