| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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<typeof setInterval> | null = null
-
- onMounted(() => {
- if (realtime) {
- timer = setInterval(updateHour, 60000)
- }
- })
-
- onUnmounted(() => {
- if (timer) clearInterval(timer)
- })
-
- return {
- greeting,
- greetingWithEmoji,
- refresh: updateHour
- }
- }
|