Nuxt-Chatroom 基于Nuxt.js+Vue.js仿微信|探探App界面聊天社交

运用nuxt.js+vue.js+vuex+vpopup+vant+webpack等技术架构开发的社交聊天室项目。实现了类Tinder翻牌左右滑动、消息发送|表情gif、图片|视频预览、消息记录下拉刷新、长按弹窗、红包|朋友圈等功能。

  

使用技术

  • 技术框架:nuxt.js+vue.js+vuex
  • UI组件库:vant: ^2.10.4
  • iconfont图标:阿里字体图标库
  • 弹窗组件:vpopup(基于vue封装自定义弹框)
  • 本地存储:cookie-universal-nuxt: ^2.1.4

项目结构

  

  

  

  

  

  

  

  

  

  

  

vue|nuxt自定义Navbar+Tabbar组件

顶部导航 / 底部标签栏是自定义组件实现。可以去参看这篇分享文章。

Vue|Nuxt自定义导航条/底部TabBar组件|vue仿咸鱼凸起Tab

vue|nuxt自定义弹出框组件

本来是考虑使用vant的弹出框功能,后来慎重考虑决定自己整一个弹框组件VPopup

大家有兴趣的话,可以去看看这篇分享文章。

Vue+Nuxt自定义弹窗|vue.js仿微信/ios弹层组件

vue|nuxt仿陌陌卡片滑动

翻一翻页面参考了探探/陌陌卡片拖拽堆叠效果。

如果对实现方式有兴趣的话,可以去看看下面这篇文章。

https://blog.csdn.net/yanxinyun1990/article/details/109033533

nuxt.config.js默认配置

nuxt的配置文件,更多详细配置参数大家可以去官网查看。

https://zh.nuxtjs.org/guide/configuration/

export default {// 端口配置(可选)server: {port: 3000,host: '192.168.101.69'},/*** 页面头部meta信息配置*/head: {title: process.env.npm_package_name || '',meta: [{ charset: 'utf-8' },{ name: 'viewport', content: 'width=device-width, initial-scale=1, user-scalable=no' },{ hid: 'keywords', name: 'keywords', content: 'Vue.js | Nuxt.js | Nuxt仿微信'},{ hid: 'description', name: 'description', content: process.env.npm_package_description || '' }],link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },{ rel: 'stylesheet', href: '/js/wcPop/skin/wcPop.css' },],script: [{ src: '/js/fontSize.js' },{ src: '/js/wcPop/wcPop.js' },]},/*** 全局css配置*/css: ['~/assets/css/reset.css','~/assets/css/layout.css','~/assets/fonts/iconfont.css',],/*** 全局插件列表*/plugins: ['~/plugins/vue-global.js',// 通过这种方式引入本地js也可以(需设置ssr:false)// {src: '~/assets/js/fontSize.js', ssr: false}],// ...
}

页面中SEO功能配置,既可以在nuxt.config.js中全局配置meta标签,也可以单独页面配置。

<script>
export default {// 用于配置页面的 meta 信息head() {return {title: '这里是标题信息 - 标题信息',meta: [{name:'keywords',hid: 'keywords',content: '关键字1 | 关键字2 | 关键字3'},{name:'description',hid:'description',content: '描述1 | 描述2 | 描述3'}]}},// 自定义布局模板layout: 'xxx.vue',// 中间件验证middleware: 'auth',// 异步数据处理async asyncData({app, params, query, store}) {let uid = params.uidlet cid = query.cidreturn {uid: uid,cid: cid,}},// ...
}
</script>

聊天模块

编辑框部分做成公共组件chatEditor.vue。运用了div的可编辑功能contenteditable来插入图文内容。

<template><divref="editor"class="editor"contentEditable="true"v-html="editorText"@click="handleClick"@input="handleInput"@focus="handleFocus"@blur="handleBlur"style="user-select:text;-webkit-user-select:text;"></div>
</template>
/*** @Desc     Vue编辑器实现* @Time     andy by 2020-10-06* @About    Q:282310962  wx:xy190310*/
<script>export default {props: {value: { type: String, default: '' }},data () {return {editorText: this.value,isChange: true,// 记录光标最后位置lastCursor: null,}},watch: {value() {if(this.isChange) {this.editorText = this.value}}},methods: {handleInput() {this.$emit('input', this.$el.innerHTML)this.lastCursor = this.getLastCursor()},// 点击编辑器handleClick() {this.$emit('clickFn')this.lastCursor = this.getLastCursor()},// 获取焦点handleFocus() {this.isChange = falsethis.$emit('focusFn')this.lastCursor = this.getLastCursor()},// 失去焦点handleBlur() {this.isChange = truethis.$emit('blurFn')},// 获取光标最后位置getLastCursor() {let sel = window.getSelection()if(sel && sel.rangeCount > 0) {return sel.getRangeAt(0)}},insertHtmlAtCursor(html) {let sel, rangeif(window.getSelection) {// IE9及其它浏览器sel = window.getSelection()// *注意:判断最后光标位置if(this.lastCursor) {sel.removeAllRanges()sel.addRange(this.lastCursor)}if(sel.getRangeAt && sel.rangeCount) {range = sel.getRangeAt(0)range.deleteContents()let el = document.createElement('div')el.appendChild(html)var frag = document.createDocumentFragment(), node, lastNodewhile ((node = el.firstChild)) {lastNode = frag.appendChild(node)}range.insertNode(frag)if(lastNode) {range = range.cloneRange()range.setStartAfter(lastNode)range.collapse(true)sel.removeAllRanges()sel.addRange(range)}}} else if(document.selection && document.selection.type != 'Control') {// IE < 9document.selection.createRange().pasteHTML(html)}}}}
</script>

好了,基于Vue.js+Nuxt.js开发聊天室项目就分享到这里。希望对大家有所帮助!

nuxt-chat聊天室|vue仿微信/探探界面nuxt+vue+vuex|朋友圈相关推荐

  1. vue2.0聊天室vue-chatRoom|仿微信界面vue+vuex+vueRouter

    Vue2.0+Vuex+VueRouter仿微信界面聊天室|仿微信聊天窗口|仿微信群聊 基于vue2.0+vuex+webpack2.0+es6+wcPop等技术开发的仿微信聊天室vue-weChat ...

  2. html语音聊天室,h5聊天室模板|仿微信聊天室html5

    运用html5开发的仿微信聊天室实战项目weChatRoom,基于h5+css3+zepto+weui+wcPop+swiper等技术混合开发,整体采用flex布局模式,兼容适配各种手机屏幕,实现了消 ...

  3. 聊天室html布局,h5聊天室模板|仿微信聊天室html5

    运用 html5 开发的仿微信聊天室实战项目weChatRoom,基于h5+css3+zepto+weui+wcPop+swiper等技术混合开发,整体采用flex布局模式,兼容适配各种手机屏幕,实现 ...

  4. h5仿微信聊天室weChatRoom|仿微信聊天界面

    html5仿微信聊天|h5仿微信聊天室|仿微信聊天界面|仿微信群聊/单聊 平时一闲下来就撸项目代码,最近一直在开发h5仿微信聊天项目,使用到了html5+css3+zepto+iscroll+swip ...

  5. h5聊天室案例|仿微信聊天界面|多人群聊

    html5仿微信聊天室weChatRoom案例|多人群聊互动|仿微信聊天界面 该项目是使用html5+css3+zepto+swiper+wcPop等技术开发的仿微信聊天室,捣鼓调试了很长时间,在手机 ...

  6. h5仿微信聊天室案例|仿微信聊天IM界面 weui

    功能介绍 仿照微信实现聊天IM, 可实现扫码自动登录, 账号密码登录, 手机验证码登录, 加好友, 建群, 群聊, 一对一私聊, 通讯录, 消息列表, 邀请好友, 群二维码(扫码自动加群), 个人二维 ...

  7. ios 探探编辑页图片拖动_nuxt+vue仿微信/探探界面|nuxt聊天实例

    最近趁着空闲时间给自己充充电,捣鼓学习了下Nuxt.js框架并开发了一个聊天项目 NuxtChat . 如上图:一些演示效果片段.emmm~ 不错哟  项目介绍 基于nuxt.js+vue.js+vu ...

  8. vue3-tauri-chat:基于tauri聊天实例|tauri仿微信客户端

    Vue3.js+Tauri桌面端聊天实例|tauri仿微信/QQ聊天TauriChat. 基于tauri+vite3.x+vue3+element-plus等技术开发客户端仿微信/QQ聊天实战案例.实 ...

  9. android仿支付提现功能,Android应用开发Android 仿微信支付密码界面

    本文将带你了解Android应用开发Android 仿微信支付密码界面,希望本文对大家学Android有所帮助. 使用 Bundle bundle = new Bundle(); bundle.put ...

最新文章

  1. Log4j2再发新版本2.16.0,完全删除Message Lookups的支持,加固漏洞防御!
  2. 读取笔记本的摄像头的原始yuv数据,通过libav(ffmpeg编码)
  3. disaster——我都做了些什么啊!
  4. 运行 ui5 serve 命令行报错的处理方法
  5. 基金小窍门:如何判断基金的赚与赔
  6. 雷神开机logo更改_九代酷睿i9加持的性能怪兽 雷神911黑武士Ⅱ评测
  7. ionic cordova 常用命令
  8. 页面的主题标记--body
  9. 数据结构与算法之一快速排序
  10. Spring-context-ConfigurationClassBeanDefinitionReader类
  11. 【前端 · 面试 】HTTP 总结(四)—— HTTP 状态码
  12. java Process在windows的使用汇总(转)
  13. 服务器断开消息,Websockets - 断开服务器消息
  14. 【持续更新】1996-2022历代AMD Radeon桌面显卡列表,Radeon显卡发布日期
  15. 根据HttpServletRequest获取用户IP地址及判断当前IP是否是内网IP
  16. jQuery手风琴图片轮播(源码+注释)
  17. c语言中取小数函数,C / C++ 保留小数函数(setprecision(n)的一些用法总结)
  18. windows10修改用户名解决CDK闪退问题
  19. Python 模拟键盘鼠标操作实战教程
  20. 简单谈C++为什么是面向对象的程序设计

热门文章

  1. linux下多路径扫描映射LUN,FAQ-未安装多路径的应用服务器如何查看新映射的LUN
  2. 在通常的微型计算机的汉字系统中,全国计算机等级考试一级选择题训练及答案...
  3. Firefox(火狐浏览器)
  4. Siemens Simcenter FloEFD 2021.2.0 v5391 for Solid Edge
  5. template functional
  6. (转)AIX基础教程
  7. ScrollView设置滚动条样式
  8. 密室逃生Egret游戏教程
  9. 修改openSUSE Tumbleweed的默认启动项 grub2
  10. Linux笔记(六)——权限的基本介绍,修改权限,修改文件/目录的所有者及所在组