当前位置:首页 > VUE

实现vue message

2026-01-08 02:16:15VUE

实现 Vue 消息提示组件

创建 Message 组件src/components 目录下创建 Message.vue 文件,内容如下:

<template>
  <transition name="fade">
    <div v-if="visible" class="message" :class="type">
      {{ content }}
    </div>
  </transition>
</template>

<script>
export default {
  data() {
    return {
      visible: false,
      content: '',
      type: 'info'
    }
  },
  methods: {
    show(content, type = 'info', duration = 3000) {
      this.content = content
      this.type = type
      this.visible = true
      setTimeout(() => {
        this.visible = false
      }, duration)
    }
  }
}
</script>

<style scoped>
.message {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  padding: 10px 20px;
  border-radius: 4px;
  color: white;
  z-index: 9999;
}

.info {
  background-color: #1890ff;
}

.success {
  background-color: #52c41a;
}

.warning {
  background-color: #faad14;
}

.error {
  background-color: #f5222d;
}

.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}

.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

创建插件文件src/plugins 目录下创建 message.js 文件:

实现vue message

import Vue from 'vue'
import Message from '@/components/Message.vue'

const MessageConstructor = Vue.extend(Message)

const message = (options = {}) => {
  const instance = new MessageConstructor({
    data: options
  })
  instance.$mount()
  document.body.appendChild(instance.$el)
  instance.show(options.content, options.type, options.duration)
}

export default {
  install(Vue) {
    Vue.prototype.$message = message
  }
}

注册插件main.js 中注册插件:

import Vue from 'vue'
import Message from '@/plugins/message'

Vue.use(Message)

使用方式 在组件中调用:

实现vue message

this.$message({
  content: '这是一条提示消息',
  type: 'success',
  duration: 2000
})

// 或简写形式
this.$message.success('操作成功')
this.$message.error('操作失败')

扩展方法message.js 中添加快捷方法:

['success', 'warning', 'info', 'error'].forEach(type => {
  message[type] = (content, duration = 2000) => {
    return message({
      content,
      type,
      duration
    })
  }
})

全局挂载 如果需要全局挂载而非在每个组件中通过 this 调用:

// 在 message.js 中
const message = {
  install(Vue) {
    Vue.prototype.$message = messageFunction
  }
}

// 在 main.js 中
import message from '@/plugins/message'
Vue.use(message)
window.message = message

标签: vuemessage
分享给朋友:

相关文章

vue实现前端分离

vue实现前端分离

Vue 实现前后端分离 前后端分离是一种架构模式,前端负责页面渲染和交互逻辑,后端提供数据接口。Vue.js 作为前端框架,非常适合实现前后端分离的开发模式。 核心实现步骤 创建 Vue 项目 使用…

vue实现年历

vue实现年历

Vue 实现年历的方法 使用 Vue 实现年历可以通过组件化开发方式,结合日期计算和动态渲染完成。以下是两种常见的实现方式: 基于原生 Vue 的日历组件 创建 Calendar.vue 组件文件,…

vue实现多选联动

vue实现多选联动

vue实现多选联动的方法 使用v-model绑定数组 在Vue中,可以通过v-model绑定一个数组来实现多选联动。当复选框被选中或取消选中时,数组会自动更新。 <template>…

vue实现多个tab

vue实现多个tab

Vue 实现多个 Tab 的方法 使用动态组件切换 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现多个…

vue卖座网实现

vue卖座网实现

Vue 卖座网实现 项目结构搭建 使用 Vue CLI 快速初始化项目,安装必要依赖如 Vue Router、Vuex、Axios。 创建核心目录结构:components(通用组件)、views(页…

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.defineProp…