国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

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

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:33:05
文檔

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

Vue.js仿微信聊天窗口展示組件功能:源碼:https://github.com/doterlin/vue-wxChat 演示地址:https://doterlin.github.io/vue-wxChat/ 運(yùn)行 # install dependencies npm install # serve with hot reload at localhost:8080 npm run
推薦度:
導(dǎo)讀Vue.js仿微信聊天窗口展示組件功能:源碼:https://github.com/doterlin/vue-wxChat 演示地址:https://doterlin.github.io/vue-wxChat/ 運(yùn)行 # 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/

運(yùn)行

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

介紹

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

    參數(shù)和說(shuō)明:

    微信聊天可視化組件

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

    參數(shù):

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

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

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

    contactAvatarUrl 好友頭像url

    ownerAvatarUrl 微信主人頭像url

    ownerNickname 微信主人昵稱

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

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

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

    [{
     direction: 2, //為2表示微信主人發(fā)出的消息,1表示聯(lián)系人
     id: 1, //根據(jù)這個(gè)來(lái)排序消息
     type: 1, //1為文本,2為圖片
     content: '你好!![呲牙]', //當(dāng)type為1時(shí)這里是文本消息,當(dāng)type2為2時(shí)這里要存放圖片地址;后續(xù)會(huì)支持語(yǔ)音的顯示
     ctime: new Date().toLocaleString() //顯示當(dāng)前消息的發(fā)送時(shí)間
    },
    {
     direction: 1,
     id: 2,
     type: 1,
     content: '你也好。[害羞]',
     ctime: new Date().toLocaleString()
    }]

    完整的使用實(shí)例

    效果:https://doterlin.github.io/vue-wxChat/

    代碼:

    //主文件,對(duì)wxChat的用法做示例
    <template>
    <wxChat 
     :data="wxChatData"
     :showShade="false"
     contactNickname="簡(jiǎn)叔"
     :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: '這是我的簡(jiǎn)歷頭像:',
     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: '你開(kāi)心就好。[微笑]',
     ctime: new Date().toLocaleString()
     }]
     }
     },
     components:{wxChat},
     methods:{
     //向上滾動(dòng)加載數(shù)據(jù)
     getUpperData(){
     var me = this;
     // 這里為模擬異步加載數(shù)據(jù)
     // 實(shí)際上你可能要這么寫(xiě):
     // 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: '向上滾動(dòng)加載第 ' + me.upperTimes +' 條!',
     ctime: new Date().toLocaleString()
     },
     {
     direction: 1,
     id: me.upperId-2,
     type: 1,
     content: '向上滾動(dòng)加載第 ' + 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: '向下滾動(dòng)加載第 ' + me.underTimes +' 條!',
     ctime: new Date().toLocaleString()
     },
     {
     direction: 2,
     id: me.underId+2,
     type: 1,
     content: '向下滾動(dòng)加載第 ' + 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仿微信聊天窗口展示組件功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。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/ 運(yùn)行 # install dependencies npm install # serve with hot reload at localhost:8080 npm run
    推薦度:
    標(biāo)簽: 聊天 微信聊天 功能
    • 熱門(mén)焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門(mén)推薦

    專題
    Top
    主站蜘蛛池模板: 一区二区三区观看 | 欧美日韩高清一区二区三区 | 国产成人深夜福利短视频99 | 天天爽夜夜爽一区二区三区 | 欧美日韩视频 | 日本成人一区 | 91欧美精品 | 一级片a | 国产精品亚洲欧美一区麻豆 | 天堂va欧美ⅴa亚洲va一国产 | 亚洲欧美色欧另类欧 | 国产精品一区二区免费 | 欧美亚洲免费 | 久久一| 亚洲视频在线看 | 亚洲一区日韩 | 欧美亚洲国产精品 | 午夜精品一区二区三区在线视 | 亚洲va国产日韩欧美精品 | 国产全黄a一级毛片视频 | 极品国产高颜值露脸在线 | 伊人黄 | 国产三级在线免费 | 欧美第一页在线 | 日本欧美一区二区 | 国产成人综合久久精品尤物 | 91精品久久久久 | 亚洲视频一区二区三区 | 最新国产视频 | 精品一区二区三区三区 | 国产综合一区二区 | 日韩一区二区三区精品 | 萌白酱喷水 | 国产毛片久久久久久国产毛片 | 91精品国产综合久 | 国产亚洲精品一品区99热 | 国产欧美日韩一区 | 国产麻豆a一级毛片爽爽影院 | 欧美人一级淫片a免费播放 欧美精品专区免费观看 | 亚洲欧美日韩激情在线观看 | 91麻豆精品国产91久久久 |