基于vue2.x實(shí)現(xiàn)的即時(shí)通訊程序仿微信聊天11細(xì)節(jié)優(yōu)化01

  • 我們的項(xiàng)目基本功能基本都開(kāi)發(fā)完了,下面就是優(yōu)化項(xiàng)目的一些細(xì)節(jié)了
  • 第一個(gè)細(xì)節(jié)生巡,我們來(lái)實(shí)現(xiàn)【在線頭像變正常冗栗,不在線頭像變灰色,并且可以實(shí)時(shí)變化】
image.png
  • 目前是正常的顏色宵凌,但是他們都沒(méi)在線鞋囊,所以要先改成默認(rèn)灰色
  • 打開(kāi)代碼src/views/home/index.vue
  • 找到頭像設(shè)置變灰樣式filter: grayscale(100%);
.avatar {
   ::v-deep img {
     filter: grayscale(100%);
   }
}
  • 這樣頭像就變灰了
image.png
  • 如果想要變成有顏色的頭像,直接將filter: grayscale(100%);設(shè)置成filter: grayscale(0%);即可
  • 這里要用到動(dòng)態(tài)綁定class
  • 來(lái)測(cè)試下瞎惫,判斷索引讓第一個(gè)好友頭像變亮
  • 找到頭像溜腐,動(dòng)態(tài)綁定class,如下
image.png
 :class="(index==0?'color':'')"
  • 然后在設(shè)置css樣式
 .color{
          ::v-deep img {
            filter: grayscale(0%);
          }
        }
  • 這樣第一個(gè)好友頭像就會(huì)變亮
image.png
  • 邏輯我們已經(jīng)知道了瓜喇,那怎么去真實(shí)判斷好友在線不在線呢挺益?
  • 其實(shí)在我們剛鏈接wocketIo服務(wù)器的時(shí)候,服務(wù)端給我們發(fā)送了一個(gè)在線好友的事件乘寒,我們只需監(jiān)聽(tīng)下這個(gè)事件望众,拿到在線好友的id,然后去和你好友列表的好友id做對(duì)比就可以了
image.png
  • 可以看到伞辛,服務(wù)端推送了一個(gè)users事件烂翰,下面是在線好友的對(duì)象
  • 第一步,我們先來(lái)監(jiān)聽(tīng)users事件蚤氏,在當(dāng)前頁(yè)面使用sockets方法函數(shù)
 sockets: {
    users: function (data) {
      console.log(data)
    },
  },
image.png
  • 這樣就打印出來(lái)了刽酱,在線好友的對(duì)象,下面是處理邏輯瞧捌,【取對(duì)象的keys組成在線好友id數(shù)組】棵里,使用到Object.keys()語(yǔ)法
sockets: {
    users: function (data) {
      console.log(data)
      console.log(Object.keys(data))
    }
  },
image.png
  • id數(shù)組拿到了,就對(duì)比下你的好友列表姐呐,如果id相等殿怜,就賦值你好友列表的那個(gè)人的的對(duì)象,改變isZaixian的值曙砂,比如isZaixian=1头谜,判斷條件再改成item.isZaixian ==1?'color':''
:class="item.isZaixian == 1 ? 'color' : ''"
  • 下面是處理邏輯,判斷好友在線把isZaixian改成1
 sockets: {
    users: function (data) {
      console.log(data)
      console.log(Object.keys(data))
      this.isZaixianArr = Object.keys(data)
    }
  },

 data() {
    return {
        isZaixianArr:[]
    }
}
  • 然后在獲取好友列表的方法了鸠澈,在then回調(diào)后柱告,去處理邏輯
async getMyfriendsFun() {
      try {
        const res = await getMyfriends()
        let arr = res.data
        const idSet = new Set(this.isZaixianArr)
        //https://blog.csdn.net/yiyueqinghui/article/details/107773347
        const res1 = arr.map(o => ({ ...o, isZaixian: idSet.has(o._id) ? 1 : o.isZaixian }))
        this.list = res1
      } catch (error) {
        console.log(error)
      }
    },
  • 在好友上線的時(shí)候截驮,刷新你的好友列表
sockets: {
    users: function (data) {
      // console.log(data)
      // console.log(Object.keys(data))
      this.isZaixianArr = Object.keys(data)
      this.getMyfriendsFun()
    }
  },
image.png
  • 這樣就變亮了,但是還要處理下排序际度,在線的在上面
 async getMyfriendsFun() {
      try {
        const res = await getMyfriends()
        let arr = res.data
        console.log(this.isZaixianArr);
        const idSet = new Set(this.isZaixianArr)
        // https://blog.csdn.net/yiyueqinghui/article/details/107773347
        console.log(idSet);
        const res1 = arr.map(o => ({ ...o, isZaixian: idSet.has(o._id) ? 1 : o.isZaixian }))
        this.list = res1.sort(function (a, b) {
            return b.isZaixian - a.isZaixian
          })
      } catch (error) {
        console.log(error)
      }
    },
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葵袭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乖菱,更是在濱河造成了極大的恐慌坡锡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窒所,死亡現(xiàn)場(chǎng)離奇詭異鹉勒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)吵取,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門禽额,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人皮官,你說(shuō)我怎么就攤上這事绵疲。” “怎么了臣疑?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵盔憨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我讯沈,道長(zhǎng)郁岩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任缺狠,我火速辦了婚禮问慎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挤茄。我一直安慰自己如叼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布穷劈。 她就那樣靜靜地躺著笼恰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歇终。 梳的紋絲不亂的頭發(fā)上社证,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音评凝,去河邊找鬼追葡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宜肉。 我是一名探鬼主播匀钧,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谬返!你這毒婦竟也來(lái)了之斯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朱浴,失蹤者是張志新(化名)和其女友劉穎吊圾,沒(méi)想到半個(gè)月后达椰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體翰蠢,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年啰劲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梁沧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝇裤,死狀恐怖廷支,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栓辜,我是刑警寧澤恋拍,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站藕甩,受9級(jí)特大地震影響施敢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狭莱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一僵娃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腋妙,春花似錦默怨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至济竹,卻和暖如春垃僚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背规辱。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工谆棺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓改淑,卻偏偏與公主長(zhǎng)得像碍岔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朵夏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容