import { ref, computed, onMounted, onUnmounted } from 'vue' /** * 问候语组合式函数 * @param name - 用户名(可选) * @param realtime - 是否实时更新(默认false) */ export function useGreeting(name?: string, realtime: boolean = false) { const currentHour = ref(new Date().getHours()) // 问候语 const greeting = computed(() => { const hour = currentHour.value let message = '' if (hour >= 5 && hour < 12) { message = 'Good Morning' } else if (hour >= 12 && hour < 18) { message = 'Good Afternoon' } else if (hour >= 18 && hour < 22) { message = 'Good Evening' } else { message = 'Good Night' } return name ? `${message}, ${name}!` : message }) // 带Emoji的问候语 const greetingWithEmoji = computed(() => { const hour = currentHour.value let message = '' let emoji = '' if (hour >= 5 && hour < 12) { message = 'Good Morning' emoji = '🌅' } else if (hour >= 12 && hour < 18) { message = 'Good Afternoon' emoji = '☀️' } else if (hour >= 18 && hour < 22) { message = 'Good Evening' emoji = '🌆' } else { message = 'Good Night' emoji = '🌙' } message = `${emoji} ${message}` return name ? `${message}, ${name}!` : message }) // 更新时间 const updateHour = () => { currentHour.value = new Date().getHours() } // 定时器 let timer: ReturnType | null = null onMounted(() => { if (realtime) { timer = setInterval(updateHour, 60000) } }) onUnmounted(() => { if (timer) clearInterval(timer) }) return { greeting, greetingWithEmoji, refresh: updateHour } }