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

vue3 插件开发

hxing6412年前 (2022-10-31)vue2489

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

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

1)目录结构

image.png

index.ts文件内容:

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文件内容

<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中引入

    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) 使用

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


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

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

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

分享给朋友:

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

uniapp uview 3.0官方文档地址

https://vkuviewdoc.fsq.pub/...

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过渡动画之CSS过渡

Vue.js 是一个以数据驱动视图的前端框架,它提供了丰富的组件化特性来帮助我们创建交互丰富的 Web 应用程序。Vue 框架内置了一些过渡特效,以及钩子函数,让我们可以在过渡期间添加自定义 CSS 类来实现过渡效果。本文将着重讲解 Vue.js 中的 CSS 过渡,并介绍如何使用它来实现各种有趣的...

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

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

Vue.js双向绑定的实现原理解析与实例演示

1. 简介 Vue.js作为一款流行的前端框架,其双向绑定机制是其核心特性之一。通过双向绑定,Vue.js实现了数据模型和视图之间的即时同步,为开发者提供了极大的便利。在本文中,我们将深入探讨Vue.js双向绑定的实现原理,并结合代码示例进行详细解释。...

发表评论

访客

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