Skip to content

Vue 插件

安装

在你的 Vue 应用中注册插件:

Vue 3

typescript
import { createApp } from 'vue'
import { MountPlugin } from 'vue-mount-plugin'
import App from './App.vue'

const app = createApp(App)

// 使用默认名称安装($show)
app.use(MountPlugin, { zIndex: 2000 })

Vue 2

typescript
import Vue from 'vue'
import { MountPlugin } from 'vue-mount-plugin'

Vue.use(MountPlugin, { zIndex: 2000 })

插件选项

typescript
interface MountPluginOptions {
  // 全局方法的自定义名称(默认: '$show')
  name?: string

  // 所有实例的默认 z-index
  zIndex?: number

  // 默认容器
  container?: string | Element

  // 默认过渡动画
  transition?: string | TransitionOptions
}

在组件中使用

Vue 3 Options API

typescript
export default {
  methods: {
    showModal() {
      this.$show(Modal, {
        props: { title: 'Hello' }
      })
    }
  }
}

Vue 2

typescript
export default {
  methods: {
    showModal() {
      this.$show(Modal, {
        props: { title: 'Hello' },
        parent: this
      })
    }
  }
}

自定义方法名

typescript
// 使用自定义名称
app.use(MountPlugin, { name: '$mount' })

// 现在可以这样使用
this.$mount(Modal, options)

全局配置

插件选项会成为全局默认值:

typescript
app.use(MountPlugin, {
  zIndex: 2000,
  transition: 'fade'
})

// 所有实例继承这些默认值
this.$show(Modal) // zIndex: 2000, transition: 'fade'

// 单个实例覆盖
this.$show(Modal, { zIndex: 3000 }) // zIndex: 3000

TypeScript 支持

为全局方法添加类型声明:

typescript
// env.d.ts
import { MountOptions, MountInstance } from 'vue-mount-plugin'

declare module 'vue' {
  interface ComponentCustomProperties {
    $show: (component: any, options?: MountOptions) => MountInstance
  }
}

对比:插件 vs 直接导入

特性插件(this.$show直接导入(mount
全局默认值✅(通过 setGlobalConfig)
模板访问
组合式 API
Tree-shaking
TypeScript需要声明内置支持

建议

对于 Vue 3 组合式 API,推荐使用直接导入:

typescript
import { mount } from 'vue-mount-plugin'

对于 Vue 2 或 Options API,插件方式更方便。

基于 MIT 许可发布