<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:33:05
        文檔

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

        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
        推薦度:
        導讀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

        源碼: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

        介紹

      1. 支持文本和圖片的展示(后續將支持對語音類的展示)。
      2. 支持滾動加載數據,其中滾動加載依賴我另外一個組件scrollLoader.vue(《Vue.js上下滾動加載組件》)。
      3. 支持QQ表情,為了能使用表情請全局注冊指令v-emotion,我在main.js做了實現;代碼如下:
      4. 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仿微信聊天窗口展示組件功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        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
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产在线ts人妖免费视频| 2022久久国产精品免费热麻豆| 毛片a级三毛片免费播放| 亚洲一区免费观看| 热re99久久6国产精品免费| 亚洲精品国产精品乱码视色 | 成人亚洲国产va天堂| 免费阿v网站在线观看g| 亚洲不卡视频在线观看| 日韩吃奶摸下AA片免费观看| 亚洲一卡2卡4卡5卡6卡在线99| 毛片免费观看网址| 亚洲Av无码国产一区二区 | 成人免费黄色网址| 国产亚洲精aa在线看| 日本不卡视频免费| www免费黄色网| 久久亚洲美女精品国产精品| 24小时在线免费视频| 中国亚洲呦女专区| 4338×亚洲全国最大色成网站| 免费看黄的成人APP| 亚洲毛片免费视频| 日本免费一区二区三区最新vr| 亚洲一级片免费看| 亚洲黄色高清视频| 国产精品免费看久久久久| kk4kk免费视频毛片| 亚洲高清视频免费| 日日AV拍夜夜添久久免费| 9久热这里只有精品免费| 久久综合亚洲鲁鲁五月天| 热99re久久精品精品免费| 国产A∨免费精品视频| 亚洲短视频在线观看| 国产婷婷高清在线观看免费| 全黄大全大色全免费大片| 日本亚洲免费无线码| 亚洲中文字幕无码久久精品1| 亚洲精品视频免费在线观看| 人禽伦免费交视频播放|