首页 分享 vue3 自定义插件

vue3 自定义插件

来源:花匠小妙招 时间:2025-09-02 03:39

vue3 自定义插件[plugins]

插件基本语法

createApp(component, props)

createApp功能是创建一个实例 createApp有两个参数,第一个参数是根组件,第二个参数是要传递给根组件的props

plugin

插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。 一个插件可以是一个拥有 install() 方法的对象,也可以直接是一个安装函数本身。

简单事例

// install const myPlugin = { install(app, options) { // 配置此应用 } } // 无install const myPlugin = (app, options) => { } // 使用 import { createApp } from 'vue' const app = createApp({}) app.use(myPlugin, { /* 可选的选项 */ })

指令可以做哪些事情

自定义MessageBox(alert)模态框 自定义Toast 图片点击放大 优惠券选择弹层 商品sku选择弹层 ......

plugin实战

自定义messageBox

// messageBox/index.vue <template> <div class="confirm-box" v-if="showMessage"> <div class="confirm"> <div class="content"> {{ confirmObj.content }} </div> <!-- 弹框描述 --> <div v-if="confirmObj.description" class="description"> {{ confirmObj.description }} </div> <div class="confirm-btn"> <div class="btn border" @click="cancel" v-if="confirmObj.cancelText">{{ confirmObj.cancelText }}</div> <div class="btn primary" :class="{ 'border-l': confirmObj.cancelText, 'block-btn': !confirmObj.cancelText }" @click="sure" > {{ confirmObj.confirmText || '确定' }} </div> </div> </div> </div> </template> <script setup> import { ref, onMounted } from 'vue' // 接收props const props = defineProps({ myProvide: { type: Function, required: true }, }) const showMessage = ref(false) // 控制弹窗显示/隐藏 const confirmObj = ref({}) // 弹窗内容接收对象 let callback = () => {} // 存储resolve const showConfirm = (obj) => { confirmObj.value = obj showMessage.value = true return new Promise((resolve) => { callback = resolve }) } const cancel = () => { callback('cancel') showMessage.value = false } const sure = () => { callback('confirm') showMessage.value = false } onMounted(() => { props.myProvide('$confirm', showConfirm) // confirm前加$标记全局变量 }) </script> <style lang="less"> .pop-mask-overflow { overflow: hidden; } .confirm-box { position: fixed; top: 0; left: 0; z-index: 10000000; width: 100vw; height: 100vh; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.5); .confirm { width: 600px; padding: 80px 60px 72px; background: #fff; border-radius: 2px; } .content { font-size: 40px; line-height: 56px; color: #000; } .description { margin-top: 32px; font-size: 28px; font-weight: 300; color: #555555; font-family: PingFangSC-Light, PingFang SC; } .confirm-btn { display: flex; align-items: center; justify-content: space-between; height: 50px; margin-top: 80px; .btn { display: flex; align-items: center; justify-content: center; height: 80px; width: 224px; font-size: 28px; line-height: 40px; color: #000; &.border { border: 1px solid #333; } &.primary { background: #000000; color: #fff; } &.block-btn { width: 100%; } } } } </style>

// messageBox/index.vue import {createApp} from 'vue' import Confirm from './index.vue' export default { install: (app) => { const myProvide = app.provide // 需要使用应用根组建提供的provide,确保子节点都可以通过inject使用 createApp(Confirm, { myProvide }).mount('#messageBox') // 挂载到独立的dom上,需要在html中添加dom节点 } }

// 使用 // 全局注册 app.use(MessageBox) // 组件内 const $confirm = inject('$confirm') const click = () => { $confirm({ content: '测试title', desc: '测试content', confirmText: '确定', cancelText: '取消' }).then(r => console.log(r)) }

玫瑰花宝典

vue3基础 vue3自定义指令 vue3自定义插件

标签:

相关知识

vue3使用什么图表库
搭建一个极简的 vue3 多窗口后台管理系统模板Ice Cream Admin 的灵感来源于花裤衩大佬的 vue
[插件]CraftFlowers 1.16——使用易于使用的 GUI 轻松创建自定义花
开发插件
付费插件
vue3
【Vue3 + Vite】6个非常强大的后台管理项目!开源且免费!
前端Vue3开发工具对比:VSCode,IntelliJ IDEA,WebStorm
有来开源组织/vue3
推荐10个开源的前端低代码项目!

网址: vue3 自定义插件 https://www.huajiangbk.com/newsview2292913.html

所属分类:花卉
上一篇: 玫瑰花 3D模型(SolidWo
下一篇: 花朵(玫瑰花) 3D模型(3ds

推荐分享