当前位置:首页 > 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 文件:

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)

使用方式 在组件中调用:

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 调用:

实现vue message

// 在 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中实现多线程通常通过Web Worker技术完成。Web Worker允许在后台线程中运行脚本,避免阻塞主线程,适合处理计算密集型任务。 使用Web Worker的…

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSelec…

vue实现slider

vue实现slider

Vue 实现 Slider 组件 使用 Vue 实现 Slider 组件可以通过原生开发或借助第三方库。以下是两种常见方法: 原生实现 Slider 创建一个基础的 Slider 组件,通过 v-m…

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

vue实现路径

vue实现路径

Vue 实现路径的方法 在 Vue 中实现路径管理通常涉及 Vue Router 的使用,以下是一些常见的实现方法: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Route…

vue实现京东

vue实现京东

Vue 实现京东电商网站的关键步骤 项目搭建与基础配置 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 管理路由,Vuex/Pinia 管理状态。配置基础 UI 框架如 E…