In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-02-23 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >
Share
Shulou(Shulou.com)06/03 Report--
今天就跟大家聊聊有关vuejs如何实现聊天界面,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
vuejs实现聊天界面的方法:1、通过执行"npm install"安装dependencies;2、通过"scrollLoader.vue"实现滚动加载数据;3、修改main.js;4、设置App.vue中的参数即可。
本文操作环境:Windows7系统、vue2.9.6版,DELL G3电脑。
vuejs怎么实现聊天界面?
Vue.js仿微信聊天窗口展示组件功能
源码:https://github.com/doterlin/vue-wxChat
演示地址:https://doterlin.github.io/vue-wxChat/
运行
# install dependenciesnpm install# serve with hot reload at localhost:8080npm run dev# build for production with minificationnpm run build
介绍
支持文本和图片的展示(后续将支持对语音类的展示)。
支持滚动加载数据,其中滚动加载依赖我另外一个组件scrollLoader.vue(《Vue.js上下滚动加载组件》)。
支持QQ表情,为了能使用表情请全局注册指令v-emotion,我在main.js做了实现;代码如下:
function toEmotion(text, isNoGif){ var list = ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷', '冷汗', '抓狂', '吐', '偷笑', '愉快', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '嘘', '晕', '折磨', '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓', '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '示爱', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球', '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻', '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '挥手', '激动', '街舞', '献吻', '左太极', '右太极', '嘿哈', '捂脸', '奸笑', '机智', '皱眉', '耶', '红包', '鸡']; if (!text) { return text; } text = text.replace(/\[[\u4E00-\u9FA5]{1,3}\]/gi, function(word){ var newWord = word.replace(/\[|\]/gi,''); var index = list.indexOf(newWord); var backgroundPositionX = -index * 24 var imgHTML = ''; if(index104){ return word; } imgHTML = `` } else { var path = index>104 ? '/img' : 'https://res.wx.qq.com/mpres/htmledition/images/icon'; imgHTML = `` } return imgHTML; }); return text;}Vue.directive('emotion', { bind: function (el, binding) { el[xss_clean] = toEmotion(binding.value) }});
如何使用?
参数已经在组件中做了说明,并在App.vue中做了演示:
参数和说明:
微信聊天可视化组件
依赖scrollLoader组件, 依赖指令v-emotion(实现请查看main.js)
参数:
width 组件宽度,默认450
wrapBg 外层父元素背景颜色,默认#efefef
maxHeight 展示窗口最高高度, 默认900
contactAvatarUrl 好友头像url
ownerAvatarUrl 微信主人头像url
ownerNickname 微信主人昵称
getUpperData (必需)当滚动到上方时加载数据的方法,返回值要为Promise对象,resolve的结构同data
getUnderData (必需)当滚动到下方时加载数据的方法,返回值同上
data (必需)传入初始化数据, 结构如下:
[{ direction: 2, //为2表示微信主人发出的消息,1表示联系人 id: 1, //根据这个来排序消息 type: 1, //1为文本,2为图片 content: '你好!![呲牙]', //当type为1时这里是文本消息,当type2为2时这里要存放图片地址;后续会支持语音的显示 ctime: new Date().toLocaleString() //显示当前消息的发送时间},{ direction: 1, id: 2, type: 1, content: '你也好。[害羞]', ctime: new Date().toLocaleString()}]
完整的使用实例
效果:https://doterlin.github.io/vue-wxChat/
代码:
//主文件,对wxChat的用法做示例import wxChat from './components/wxChat.vue'export default { name: 'app', data () { return { upperTimes: 0, underTimes: 0, upperId: 0, underId: 6, ownerAvatarUrl: './src/assets/avatar1.png', contactAvatarUrl: './src/assets/avatar2.png', wxChatData: [{ direction: 2, id: 1, type: 1, content: '你好!![呲牙]', ctime: new Date().toLocaleString() }, { direction: 1, id: 2, type: 1, content: '你也好。[害羞]', ctime: new Date().toLocaleString() }, { direction: 2, id: 3, type: 1, content: '这是我的简历头像:', ctime: new Date().toLocaleString() }, { direction: 2, id: 4, type: 2, content: './src/assets/wyz.jpg', ctime: new Date().toLocaleString() }, { direction: 1, id: 5, type: 1, content: '你开心就好。[微笑]', ctime: new Date().toLocaleString() }] } }, components:{wxChat}, methods:{ //向上滚动加载数据 getUpperData(){ var me = this; // 这里为模拟异步加载数据 // 实际上你可能要这么写: // return axios.get('xxx').then(function(result){ // return result; //result的格式需要类似下面resolve里面的数组 // }) return new Promise(function(resolve){ setTimeout(function(){ //模拟加载完毕 if(me.upperTimes>3){ return resolve([]); } //加载数据 resolve([{ direction: 2, id: me.upperId-1, type: 1, content: '向上滚动加载第 ' + me.upperTimes +' 条!', ctime: new Date().toLocaleString() }, { direction: 1, id: me.upperId-2, type: 1, content: '向上滚动加载第 ' + me.upperTimes +' 条!', ctime: new Date().toLocaleString() }] ) }, 1000); me.upperId= me.upperId+2; me.upperTimes++; }) }, getUnderData(){ var me = this; //意义同getUpperData() return new Promise(function(resolve){ setTimeout(function(){ //模拟加载完毕 if(me.underTimes>3){ return resolve([]); } //加载数据 resolve( [{ direction: 1, id: me.underId+1, type: 1, content: '向下滚动加载第 ' + me.underTimes +' 条!', ctime: new Date().toLocaleString() }, { direction: 2, id: me.underId+2, type: 1, content: '向下滚动加载第 ' + me.underTimes +' 条!', ctime: new Date().toLocaleString() }] ) }, 1000); me.underId = me.underId+2; me.underTimes++; }) } }}*{ margin: 0; padding: 0;}#app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px;}h2, h3 { font-weight: normal;}ul { list-style-type: none; padding: 0;}li { display: inline-block;}看完上述内容,你们对vuejs如何实现聊天界面有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.