欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年08月11日 08:55:09   作者:doterlin  
這篇文章主要介紹了Vue.js仿微信聊天窗口展示組件功能,需要的朋友可以參考下

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

演示地址:https://doterlin.github.io/vue-wxChat/

運行

# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build

介紹

  • 支持文本和圖片的展示(后續(xù)將支持對語音類的展示)。
  • 支持滾動加載數(shù)據(jù),其中滾動加載依賴我另外一個組件scrollLoader.vue(《Vue.js上下滾動加載組件》)。
  • 支持QQ表情,為了能使用表情請全局注冊指令v-emotion,我在main.js做了實現(xiàn);代碼如下:
function toEmotion(text, isNoGif){
 var list = ['微笑', '撇嘴', '色', '發(fā)呆', '得意', '流淚', '害羞', '閉嘴', '睡', '大哭', '尷尬', '發(fā)怒', '調(diào)皮', '呲牙', '驚訝', '難過', '酷', '冷汗', '抓狂', '吐', '偷笑', '愉快', '白眼', '傲慢', '饑餓', '困', '驚恐', '流汗', '憨笑', '大兵', '奮斗', '咒罵', '疑問', '噓', '暈', '折磨', '衰', '骷髏', '敲打', '再見', '擦汗', '摳鼻', '鼓掌', '糗大了', '壞笑', '左哼哼', '右哼哼', '哈欠', '鄙視', '委屈', '快哭了', '陰險', '親親', '嚇', '可憐', '菜刀', '西瓜', '啤酒', '籃球', '乒乓', '咖啡', '飯', '豬頭', '玫瑰', '凋謝', '示愛', '愛心', '心碎', '蛋糕', '閃電', '炸彈', '刀', '足球', '瓢蟲', '便便', '月亮', '太陽', '禮物', '擁抱', '強', '弱', '握手', '勝利', '抱拳', '勾引', '拳頭', '差勁', '愛你', 'NO', 'OK', '愛情', '飛吻', '跳跳', '發(fā)抖', '慪火', '轉(zhuǎn)圈', '磕頭', '回頭', '跳繩', '揮手', '激動', '街舞', '獻吻', '左太極', '右太極', '嘿哈', '捂臉', '奸笑', '機智', '皺眉', '耶', '紅包', '雞'];
 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)
 }
});

如何使用?

參數(shù)已經(jīng)在組件中做了說明,并在App.vue中做了演示:

參數(shù)和說明:

微信聊天可視化組件

依賴scrollLoader組件, 依賴指令v-emotion(實現(xiàn)請查看main.js)

參數(shù):

width 組件寬度,默認(rèn)450

wrapBg 外層父元素背景顏色,默認(rèn)#efefef

maxHeight 展示窗口最高高度, 默認(rèn)900

contactAvatarUrl 好友頭像url

ownerAvatarUrl 微信主人頭像url

ownerNickname 微信主人昵稱

getUpperData (必需)當(dāng)滾動到上方時加載數(shù)據(jù)的方法,返回值要為Promise對象,resolve的結(jié)構(gòu)同data

getUnderData (必需)當(dāng)滾動到下方時加載數(shù)據(jù)的方法,返回值同上

data (必需)傳入初始化數(shù)據(jù), 結(jié)構(gòu)如下:

[{
 direction: 2, //為2表示微信主人發(fā)出的消息,1表示聯(lián)系人
 id: 1, //根據(jù)這個來排序消息
 type: 1, //1為文本,2為圖片
 content: '你好!![呲牙]', //當(dāng)type為1時這里是文本消息,當(dāng)type2為2時這里要存放圖片地址;后續(xù)會支持語音的顯示
 ctime: new Date().toLocaleString() //顯示當(dāng)前消息的發(fā)送時間
},
{
 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:{
 //向上滾動加載數(shù)據(jù)
 getUpperData(){
  var me = this;
  // 這里為模擬異步加載數(shù)據(jù)
  // 實際上你可能要這么寫:
  // return axios.get('xxx').then(function(result){
  //  return result; //result的格式需要類似下面resolve里面的數(shù)組
  // })
  return new Promise(function(resolve){
  setTimeout(function(){
   //模擬加載完畢
   if(me.upperTimes>3){
   return resolve([]);
   }
   //加載數(shù)據(jù)
   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([]);
   }
   //加載數(shù)據(jù)
   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

總結(jié)

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

相關(guān)文章

  • vuejs簡單驗證碼功能完整示例

    vuejs簡單驗證碼功能完整示例

    這篇文章主要介紹了vuejs簡單驗證碼功能,結(jié)合完整實例形式分析了vue.js驗證碼的生成、顯示、校驗等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Vue.js實現(xiàn)簡單計時器應(yīng)用

    Vue.js實現(xiàn)簡單計時器應(yīng)用

    這篇文章主要為大家詳細介紹了Vue.js實現(xiàn)簡單計時器應(yīng)用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Vue3自動引入組件與組件庫的方法實例

    Vue3自動引入組件與組件庫的方法實例

    關(guān)于vue?組件還是非常好用的,真正掌握預(yù)計需要一段時間,下面這篇文章主要給大家介紹了關(guān)于Vue3自動引入組件與組件庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • vue3+vite中開發(fā)環(huán)境與生產(chǎn)環(huán)境全局變量配置指南

    vue3+vite中開發(fā)環(huán)境與生產(chǎn)環(huán)境全局變量配置指南

    最近在使用vite生成項目,這篇文章主要給大家介紹了關(guān)于vue3+vite中開發(fā)環(huán)境與生產(chǎn)環(huán)境全局變量配置的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • npm如何更新VUE package.json文件中依賴的包版本

    npm如何更新VUE package.json文件中依賴的包版本

    這篇文章主要介紹了npm如何更新VUE package.json文件中依賴的包版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 淺談vue-props的default寫不寫有什么區(qū)別

    淺談vue-props的default寫不寫有什么區(qū)別

    這篇文章主要介紹了淺談vue-props的default寫不寫有什么區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Nginx同一端口部署多個前后端分離的vue項目完整步驟

    Nginx同一端口部署多個前后端分離的vue項目完整步驟

    最近做項目結(jié)構(gòu)優(yōu)化,前端項目都是部署在nginx上,想實現(xiàn)同一個端口可以訪問多個前端項目,所以就有了本文,這篇文章主要給大家介紹了關(guān)于Nginx同一端口部署多個前后端分離的vue項目的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • vue使用vue-json-viewer插件展示JSON格式數(shù)據(jù)的方法

    vue使用vue-json-viewer插件展示JSON格式數(shù)據(jù)的方法

    這篇文章主要給大家介紹了關(guān)于vue使用vue-json-viewer插件展示JSON格式數(shù)據(jù)的相關(guān)資料,前端使用這個插件可以方便展現(xiàn)出json格式的數(shù)據(jù),下載引入使用代碼可直接使用,需要的朋友可以參考下
    2024-05-05
  • vue3+element Plus實現(xiàn)在table中增加一條表單數(shù)據(jù)的示例代碼

    vue3+element Plus實現(xiàn)在table中增加一條表單數(shù)據(jù)的示例代碼

    這篇文章主要介紹了vue3+element Plus實現(xiàn)在table中增加一條表單數(shù)據(jù)的操作,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Vue分頁組件實例代碼

    Vue分頁組件實例代碼

    這篇文章主要為大家詳細介紹了Vue分頁組件的實例代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評論