一、项目介绍

基于Vue2.5.6+Vuex+vue-cli+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术混合架构开发的仿微信web端聊天室——vueWebChat,实现了发送消息、表情(动图),图片、视频预览,右键菜单、截屏、截图可直接粘贴至文本框进行发送。

二、技术框架

  • MVVM框架:Vue2.5.6
  • 状态管理:Vuex
  • 页面路由:Vue-router
  • iconfont图标:阿里巴巴字体图标库
  • 自定义滚动条:vue-gemini-scrollbar
  • 弹窗组件:element-ui(饿了么前端UI库)
  • 环境配置:node.js + cnpm + webpack
  • 高德地图:vue-amap
  • 图片预览:vue-photo-preview

◆ 点击右上角最大化按钮,可以进行全屏切换

◆ 引入公共及全局组件配置components.js

/*引入公共及全局组件配置
*/ // 引入侧边栏及联系人
import winBar from './components/winbar'
import sideBar from './components/sidebar'
import recordList from './components/recordList'
import contactList from './components/contact'// 引入jquery
import $ from 'jquery'// 引入wcPop弹窗插件
import wcPop from './assets/js/wcPop/wcPop'
import './assets/js/wcPop/skin/wcPop.css'// 引入饿了么pc端UI库
import elementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'// 引入图片预览插件
import photoPreview from 'vue-photo-preview'
import 'vue-photo-preview/dist/skin.css'// 引入自定义滚动条插件
import geminiScrollbar from 'vue-gemini-scrollbar'// 引入加载更多插件
import infiniteLoading from 'vue-infinite-scroll'// 引入高德地图
import vueAMap from 'vue-amap'const install = Vue => {// 注册组件Vue.component('win-bar', winBar)Vue.component('side-bar', sideBar)Vue.component('record-list', recordList)Vue.component('contact-list', contactList)// 应用实例
    Vue.use(elementUI)Vue.use(photoPreview, {loop: false,fullscreenEl: true, //是否全屏arrowEl: true, //左右按钮
    });Vue.use(geminiScrollbar)Vue.use(infiniteLoading)Vue.use(vueAMap)vueAMap.initAMapApiLoader({key: "e1dedc6bdd765d46693986ff7ff969f4",plugin: ["AMap.Autocomplete", //输入提示插件"AMap.PlaceSearch", //POI搜索插件"AMap.Scale", //右下角缩略图插件 比例尺"AMap.OverView", //地图鹰眼插件"AMap.ToolBar", //地图工具条"AMap.MapType", //类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制"AMap.PolyEditor", //编辑 折线多,边形"AMap.CircleEditor", //圆形编辑器插件"AMap.Geolocation" //定位控件,用来获取和展示用户主机所在的经纬度位置
        ],uiVersion: "1.0"});}export default install

◆ 主页面模板

<template><div id="app"><div class="vChat-wrapper flexbox flex-alignc"><div class="vChat-panel" style="background-image: url(src/assets/img/placeholder/vchat__panel-bg01.jpg);"><div class="vChat-inner flexbox"><!-- //顶部按钮(最大、最小、关闭) --><win-bar></win-bar><!-- //侧边栏 --><side-bar></side-bar><keep-alive><router-view class="flex1 flexbox"></router-view></keep-alive></div></div></div></div>
</template><script>
export default {name: 'app',data () {return {}},methods: {},
}
</script><style>
/* 引入公共样式 */
@import './assets/fonts/iconfont.css';
@import './assets/css/reset.css';
@import './assets/css/layout.css';</style>

◆ vue文本框实现截图粘贴发送图片:

// 【截图粘贴图片】
document.getElementById('J__wcEditor').addEventListener('paste',function(e){var cbd = e.clipboardData;var ua = window.navigator.userAgent;// 没有数据if (!(e.clipboardData && e.clipboardData.items)) {return;}// Mac平台下Chrome49版本以下 复制Finder中的文件的Bug Hack掉if(cbd.items && cbd.items.length === 2 && cbd.items[0].kind === "string" && cbd.items[1].kind === "file" &&cbd.types && cbd.types.length === 2 && cbd.types[0] === "text/plain" && cbd.types[1] === "Files" &&ua.match(/Macintosh/i) && Number(ua.match(/Chrome\/(\d{2})/i)[1]) < 49){return;}for(var i = 0; i < cbd.items.length; i++){var item = cbd.items[i];console.log(item);console.log(item.kind);if(item.kind == "file"){var blob = item.getAsFile();if(blob.size === 0){return;}// 插入图片记录var reader = new FileReader();reader.readAsDataURL(blob);reader.onload = function(){var _img = this.result;var _tpl = ['<li class="me">\<div class="content">\<p class="author">王梅(Fine)</p>\<div class="msg picture"><img class="img__pic" src="'+ _img + '" preview="1" /></div>\</div>\<a class="avatar" href="/contact/uinfo"><img src="src/assets/img/uimg/u__chat-img11.jpg" /></a>\</li>'].join("");$("#J__chatMsgList").append(_tpl);setTimeout(() => {$("#J__geminiScrollbar .gm-scroll-view").animate({ scrollTop: $("#J__chatMsgList").height() }, 0);$(".fixGeminiscrollHeight").show();setTimeout(() => { $(".fixGeminiscrollHeight").hide();}, 300);}, 17);}}}
});

◆ 表情处理及视频预览:

// >>> 【表情、动图swiper切换模块】--------------------------
var emotionSwiper;
function setEmotionSwiper(tmpl) {var _tmpl = tmpl ? tmpl : $("#J__emotionFootTab ul li.cur").attr("tmpl");$("#J__swiperEmotion .swiper-container").attr("id", _tmpl);$("#J__swiperEmotion .swiper-wrapper").html($("." + _tmpl).html());emotionSwiper = new Swiper('#' + _tmpl, {// loop: true,// autoplay: true,// 分页器
        pagination: {el: '.pagination-emotion', clickable: true,},});
}
// 表情模板切换
$("body").on("click", "#J__emotionFootTab ul li.swiperTmpl", function () {// 先销毁swiperemotionSwiper && emotionSwiper.destroy(true, true);var _tmpl = $(this).attr("tmpl");$(this).addClass("cur").siblings().removeClass("cur");setEmotionSwiper(_tmpl);
});// >>> 【视频预览模块】--------------------------
$("body").on("click", "#J__chatMsgList li .video", function () {var _src = $(this).find("img").attr("videoUrl"), _video;var videoIdx = wcPop({id: 'wc__previewVideo',skin: 'fullscreen',// content: '<video id="J__videoPreview" width="100%" height="100%" controls="controls" x5-video-player-type="h5" x5-video-player-fullscreen="true" webkit-playsinline preload="auto"></video>',content: '<video id="J__videoPreview" width="100%" height="100%" controls="controls" preload="auto"></video>',shade: false,xclose: true,style: 'background: #000;padding-top:48px;',anim: 'scaleIn',show: function(){_video = document.getElementById("J__videoPreview");_video.src = _src;if (_video.paused) {_video.play();} else {_video.pause();}// 播放结束_video.addEventListener("ended", function(){_video.currentTime = 0;});// 退出全屏_video.addEventListener("x5videoexitfullscreen", function(){wcPop.close(videoIdx);})}});
});

转载于:https://www.cnblogs.com/xiaoyan2017/p/10793728.html

vue仿微信网页版|vue+web端聊天室|仿微信客户端vue版相关推荐

  1. h5移动端聊天室|仿微信界面聊天室|h5多人聊天室

    今年的FIFA世界杯甚是精彩,最近兴致高涨就利用HTML5开发了一个手机端仿微信界面聊天室,该h5聊天室采用750px全新伸缩flex布局,以及使用rem响应式配合fontsize.js,页面弹窗则是 ...

  2. java webpack web项目_官方出品,微信小程序和 Web 端同构解决方案——kbone

    介绍 最近在琢磨一些小程序开发和移动web开发,偶然间在Github上看到了这样一个项目--kbone,一个致力于微信小程序和 Web 端同构的解决方案.微信小程序的底层模型和 Web 端不同,我们想 ...

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

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

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

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

  5. vue php聊天室,实例详解vue组件父子间通信之聊天室

    本文主要为大家详细介绍了vue组件父子间通信之综合练习聊天室制作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 组件父子间通信之综合练习 {{msg}} // 创建父组件 Vu ...

  6. 许嵩音乐智能问答系统微信小程序之客服聊天室

    许嵩音乐智能问答系统微信小程序之客服聊天室 项目简介. 音乐播放器搭建. 获取数据及文本分类. 智能客服聊天界面. 连接前端微信小程序输入和后端python,并返回值 连接知识图谱 你还在为因为性格腼 ...

  7. 微信小程序对接环信聊天室

    微信小程序对接环信聊天室 1.下载demo 链接: https://pan.baidu.com/s/1IpQeSYO54Dg0CliZ6XNhpQ 提取码: 9gsu 复制这段内容后打开百度网盘手机A ...

  8. 【云原生之Docker实战】使用Docker部署Web在线聊天室Rocket.Chat

    [云原生之Docker实战]使用Docker部署Web在线聊天室Rocket.Chat 一.Rocket.Chat介绍 二.检查本地系统环境 1.检查系统版本 2.检查docker版本 3.检查doc ...

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

    项目简介 基于uni-app+vue+vuex+uniPop+swiper等技术开发的仿微信聊天室uniapp-chatroom项目,类似vue及小程序api语法使开发更加方便,实现了发送图文消息.表 ...

最新文章

  1. 关于python创建类的深入理解
  2. html概述和基本结构
  3. WindowsPhone7开发简单豆瓣网应用程序之界面设计
  4. npm run build 打包 之后怎么用_npm 组件你应该知道的事
  5. mysql怎么禁止远程连接_mysql如何设置禁止远程连接
  6. ffmpeg-win32-v3.2.4 下载_iTOP-4412开发板android4.4代码下载和编译
  7. 初识python多线程
  8. 分组框控件 1130
  9. 建立可视化决策平台,“数据化”首当其冲!
  10. 微服务配置中心是干啥的_微服务化改造系列之三:配置中心
  11. 【Object C】从Java 一步步走向Object C
  12. DeskPins-让应用始终在最前面
  13. 计算机汇编语言教程pdf,汇编语言实践教程.pdf
  14. win10 uwp 访问解决方案文件
  15. python大众点评霸王餐_划重点:如何报名大众点评霸王餐?怎么做才能中奖?
  16. 如何利用PDF转换器将WPS转换成word
  17. APDL电磁仿真学习中可能会遇到的问题1
  18. 一篇文章读懂支付宝9.0改版背后的产品逻辑和战略布局
  19. 程序员常用英语词汇(018)
  20. 易度,企业中的蓝胖子

热门文章

  1. 区块链技术应用于版权保护与其优势所在
  2. 6个关键步骤,手把手教你构建图模型
  3. 机器人对话常用语模板_聊天机器人的技术原理和未来的发展
  4. 关注DSP:最新应用前景及中国市场发展情况分析
  5. ubuntu安装eclipse插件没反应
  6. Teamcenter软件盗版
  7. 日记侠:成为软文高手有秘诀吗?
  8. 软件开发流程(一):总结软件开发流程的经验教训
  9. 如何让IIS支持.docx下载
  10. 封闭开发是为何? .