亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue.js仿微信聊天窗口展示組件功能

2019-11-19 15:50:30
字體:
來源:轉載
供稿:網友

源碼: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(index<0){   return word;  }  if (isNoGif) {   if(index>104){    return word;   }   imgHTML = `<i class="static-emotion" style="background:url(https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/default218877.gif) ${backgroundPositionX}px 0;"></i>`  } else {   var path = index>104 ? '/img' : 'https://res.wx.qq.com/mpres/htmledition/images/icon';   imgHTML = `![](${path}/emotion/${index}.gif)`  }  return imgHTML; }); return text;}Vue.directive('emotion', { bind: function (el, binding) {  el.innerHTML = 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的用法做示例<template><wxChat  :data="wxChatData" :showShade="false" contactNickname="簡叔" :getUpperData="getUpperData" :getUnderData="getUnderData" :ownerAvatarUrl="ownerAvatarUrl" :contactAvatarUrl="contactAvatarUrl" :width="420"></wxChat></template><script>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++;  }) } }}</script><style>*{ 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;}h1, h2 { font-weight: normal;}ul { list-style-type: none; padding: 0;}li { display: inline-block;}</style>

歡迎 start:

https://github.com/doterlin/vue-wxChat

總結

以上所述是小編給大家介紹的Vue.js仿微信聊天窗口展示組件功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品在线播放| 国产精品xxxxx| 国产成人精品综合久久久| 欧美激情亚洲另类| 97在线视频免费播放| 久久国产精品久久久久久久久久| 亚洲香蕉伊综合在人在线视看| 中文字幕日韩欧美| 国产精品久久一区主播| 91在线观看免费| 91午夜在线播放| 午夜免费在线观看精品视频| 日本91av在线播放| 97精品国产97久久久久久| 最近2019年中文视频免费在线观看| 日韩欧美精品在线观看| 国产欧美韩国高清| 2025国产精品视频| 国产精品偷伦一区二区| 久久视频在线视频| 久久视频在线观看免费| 日韩欧美aⅴ综合网站发布| 亚洲精品国产综合久久| 中文字幕亚洲精品| 狠狠做深爱婷婷久久综合一区| 国产精品一区二区性色av| 国产成人精品在线视频| 国产精品永久在线| 国产精品久久久久久久久久尿| 欧美日韩国产中文精品字幕自在自线| 国产精品偷伦视频免费观看国产| 91精品国产一区| 亚洲欧洲日产国码av系列天堂| 日本一本a高清免费不卡| 国产成人一区三区| 大伊人狠狠躁夜夜躁av一区| 日韩av在线电影网| 国产精品专区第二| 欧美极品少妇xxxxx| 国产欧美亚洲精品| 亚洲韩国欧洲国产日产av| 日韩av中文字幕在线免费观看| 中文字幕欧美日韩| 亚洲女人被黑人巨大进入al| 高清日韩电视剧大全免费播放在线观看| 精品无人区乱码1区2区3区在线| 亚洲国产精品久久91精品| 欧美激情网友自拍| 欧美亚洲另类激情另类| 成人精品一区二区三区| 国产亚洲欧美日韩美女| 国内自拍欧美激情| 日韩成人av网址| 成人欧美一区二区三区黑人孕妇| 国产精品91久久久| 国产精品欧美激情在线播放| 久久综合免费视频| 欧美亚洲视频在线观看| 日韩大陆欧美高清视频区| 亚洲精品乱码久久久久久金桔影视| 久久亚洲私人国产精品va| 久久在线免费观看视频| 欧美性xxxxxx| 毛片精品免费在线观看| 在线观看精品自拍私拍| 日韩美女主播视频| 91精品国产91久久久久久吃药| 蜜月aⅴ免费一区二区三区| 欧美电影免费观看大全| 91精品久久久久久久久| 91在线看www| 羞羞色国产精品| 国内精品久久久久伊人av| 永久免费毛片在线播放不卡| 国产精品高清免费在线观看| 午夜精品福利在线观看| 国产精品福利久久久| 午夜精品久久久久久久99热浪潮| 国产视频亚洲视频| 日韩精品视频免费专区在线播放| 黑丝美女久久久| 欧美一级片在线播放| 亚洲天堂网在线观看| 国产亚洲a∨片在线观看| 亚洲午夜未删减在线观看| 奇米影视亚洲狠狠色| 亚洲久久久久久久久久| 亚洲一区二区三区在线免费观看| 人体精品一二三区| 国产91网红主播在线观看| 久久99精品久久久久久青青91| 欧美黑人巨大xxx极品| 久久精品久久久久久| 奇门遁甲1982国语版免费观看高清| 亚洲丁香婷深爱综合| 亚洲激情视频网站| 亚洲成人av在线播放| 亚洲午夜未满十八勿入免费观看全集| 亚洲第一福利视频| 国产精品一区二区久久精品| 精品国产91久久久久久| 国产精品美女在线| 日韩毛片中文字幕| 亚洲国产精品成人va在线观看| 九九热最新视频//这里只有精品| 97免费中文视频在线观看| 亚洲国产欧美一区二区三区同亚洲| 日韩精品视频在线观看网址| 91超碰中文字幕久久精品| 亚洲欧美变态国产另类| 日韩精品在线看| 国产精品爽爽爽爽爽爽在线观看| 亚洲图片欧美午夜| 国产精品视频一区二区高潮| 亚洲欧洲中文天堂| 亚洲精品动漫久久久久| 久久精品国产69国产精品亚洲| 欧美亚洲日本黄色| 中文字幕精品久久久久| xxxxx成人.com| 日韩电影免费在线观看| 性色av香蕉一区二区| 97精品国产97久久久久久| 亚洲性69xxxbbb| 琪琪第一精品导航| 欧美日韩一区二区免费视频| 国产亚洲人成网站在线观看| 亚洲国产精品中文| 亚洲欧美日韩国产精品| 亚洲国产精品免费| 亚洲最新在线视频| 亚洲精品中文字| 欧美性极品xxxx娇小| 亚洲男子天堂网| 亚洲精品久久久久中文字幕二区| 欧美日韩一区二区在线播放| 国产99久久精品一区二区| 日本午夜精品理论片a级appf发布| 亚洲嫩模很污视频| 中文字幕在线国产精品| 国产精品视频区| 亚洲精品动漫久久久久| 黑人与娇小精品av专区| 国产精品久久久久免费a∨大胸| 色综合久久悠悠| 国产精品美女999| 亚洲国产精品中文| 亚洲一区美女视频在线观看免费| 91久久在线观看| 国产精品pans私拍| 51精品在线观看| 亚洲最新av在线| 欧美精品一本久久男人的天堂| 92国产精品视频| 亚洲一区二区三区乱码aⅴ| 欧美日韩中文在线观看| 国产91网红主播在线观看| 成人久久一区二区| 在线a欧美视频| 亚洲美女性视频| 日韩欧美国产网站| 精品女厕一区二区三区| 亚洲一区二区久久| 欧美xxxx做受欧美|