現(xiàn)在的用戶對(duì)于網(wǎng)站的交互越來(lái)越注重,尤其是消息提醒功能。一個(gè)站點(diǎn),如何添加站內(nèi)消息的提示呢?Vue提供了很好的方案來(lái)實(shí)現(xiàn)這個(gè)功能。
使用Vue實(shí)現(xiàn)站內(nèi)消息功能時(shí),首先需要明確用戶的需求。做到有就提示,做到?jīng)]有就不提示。考慮性能問(wèn)題,消息提示盡可能少的請(qǐng)求后端獲取數(shù)據(jù)。現(xiàn)在我們來(lái)一步步實(shí)現(xiàn)該功能。
首先,在組件的data中定義一個(gè)messages數(shù)組。
data: { messages: [] }
然后定義一個(gè)下拉組件,將data傳進(jìn)去。
<template> <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 消息 <span class="badge badge-light">{{messages.length}}在上面的代碼中,我們創(chuàng)建了一個(gè)下拉列表,用以展示消息,同時(shí)綁定消息數(shù)量,并用v-for循環(huán)展示每一個(gè)消息。同時(shí)還需要一個(gè)通知組件:
<template> <div class="alert alert-info"> {{message.title}} </div> </template> <script> export default { props: ['message'] } </script>該通知組件可以根據(jù)消息的title顯示不同的通知。
下面我們來(lái)添加全局方法,從服務(wù)器讀取消息。這里我們使用axios插件來(lái)發(fā)起網(wǎng)絡(luò)請(qǐng)求。
import axios from 'axios'; Vue.prototype.$fetchMessages = function () { return axios.get('/api/messages').then((res) =>{ this.$root.messages = res.data; }); };接下來(lái),我們需要在組件中調(diào)用這個(gè)方法,以便在需要的時(shí)候獲取數(shù)據(jù)。這里我們使用mounted方法來(lái)實(shí)現(xiàn)。
mounted: function () { this.$fetchMessages(); }done!以上就是使用Vue實(shí)現(xiàn)站內(nèi)消息的全部過(guò)程,代碼清晰可讀,可大大提高網(wǎng)站交互體驗(yàn),適合各種場(chǎng)景的應(yīng)用,尤其是對(duì)于需要實(shí)時(shí)信息提示的前端應(yīng)用。它是非常實(shí)用的一種方案。