当前位置:首页 > javascript > vue > 正文内容

vue3 插件开发

hxing6412年前 (2022-10-31)vue2715

插件是向vue添加全局功能。你如果是一个对象需要提供install方法,你如果是function就直接当install 方法去使用。

写一个loading组件供全局使用:

1)目录结构

image.png

index.ts文件内容:

TypeScript
import { createVNode, render, App } from 'vue'
import Loading from './index.vue'
export default {
    // 自定义组件需要install 函数
    install(app:App) {
        // 先转成虚拟dom
        const vNode = createVNode(Loading)
        render(vNode, document.body)
        // vnode中通过exposed属性获取组件导出的方法
        app.config.globalProperties.$loading = {
            show: vNode.component?.exposed?.show,
            hide: vNode.component?.exposed?.hide
        }
        console.log(vNode);
        
    }
}

index.vue文件内容

Markup
<template>
  <div v-if="showLoading">
    loading...
  </div>
</template>
<script setup>
let showLoading = ref(false)
const show = () => showLoading.value = true
const hide = () => showLoading.value = false
    defineExpose({
        show,
        hide
    })
</script>
<style scoped>
    .loading {
        position: absolute;
        left: 0;
        top: 0;
        width: 100vw;
        height: 100vh;
        background-color: rgba($color: #000000, $alpha: .8);
        color: #fff;
    }
</style>

2) 在main.ts中引入

JavaScript
    import loading from './components/loading'  // 组件路径
    //编写ts loading 声明文件放置报错 和 智能提示
    type LoadingTypes = {
        show: () => void,
        hide: () => void
    }
    declare module '@vue/runtime-core' {
        export interface ComponentCustomProperties {
            $loading: LoadingTypes
        }
    }
    app.use(loading)

3) 使用

JavaScript
    import { getCurrentInstance} from 'vue'
    const  instance = getCurrentInstance()  
    instance?.proxy?.$Loading.show()
    setTimeout(()=>{
      instance?.proxy?.$Loading.hide()
    },5000)

扫描二维码推送至手机访问。

版权声明:本文由星星博客发布,如需转载请注明出处。

本文链接:https://xingxinghan.cn/?id=406

“vue3 插件开发” 的相关文章

vue 路由 vue-router

vue 路由 vue-router

前面的话  在Web开发中,路由是指根据URL分配到对应的处理程序。对于大多数单页面应用,都推荐使用官方支持的vue-router。Vue-router通过管理URL,实现URL和组件的对应,以及通过URL进行组件之间的切换。本文将详细介绍Vue路由vue-router 安装  在使用vu...

【Vue】详解Vue组件系统

Vue是一款流行的JavaScript框架,它的组件系统是它最重要的特性之一。Vue组件系统允许开发人员将UI界面划分成独立、可重复使用的组件,从而提高代码的可维护性和可重用性。本文将详细介绍Vue组件系统的各个方面。组件的定义在Vue中,一个组件是由一个Vue实例构成的。组件通常包含一个模板、一个...

【Vue】深入探究Vue生命周期

Vue.js 是一款流行的前端框架,广泛应用于各种 Web 应用开发中。在 Vue.js 中,每个组件都有一个生命周期,它包括一系列钩子函数,用于在特定阶段执行特定的操作。本文将详细介绍 Vue 组件生命周期,并讲述它们的实际应用。生命周期钩子函数Vue 组件的生命周期分成了 8 个不同的阶段,每个...

Vue中的父子组件通讯及使用sync同步父子组件数据

在Vue.js中,组件通讯是一个非常重要的主题。特别是在处理父子组件之间的通讯时,我们需要了解不同的方式来传递数据和响应事件。本文将介绍Vue中父子组件通讯的几种方式,并重点讨论使用sync属性来实现父子组件数据的双向绑定。父子组件通讯 在Vue中,父组件可以通过prop向子组件传递数据,而子组件则...

Vue.js 系列教程:深入理解组件、Props和Slots

Vue.js 是一款流行的 JavaScript 框架,它提供了一种组件化的开发方式,使得构建复杂的用户界面变得更加简单和高效。 在本篇教程中,我们将深入探讨 Vue.js 中的组件、Props 和 Slots 的概念和用法。 组件...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。