搜索

查看: 3189|回复: 11

[JavaScript] vue3自定义插件的作用场景及使用示例详解

[复制链接]
发表于 2023-5-4 11:49:46 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:49:46 3189 11 看全部
目录
  • 插件的作用场景
  • 插件的定义(注册)
  • 插件的安装
  • 插件的使用
  • 插件中的Provide/inject
    插件的作用场景
    在vue2的插件那篇文章我们介绍过插件其实就是vue的增强功能。通常来为vue添加全局功能的。在vue3中插件的功能也是一样的,只是它们在定义上有所不同。
  • 通过app.component()和app.directive()注册一到多个全局组件或自定义指令
  • 通过app.provide()使一个资源可被注入进整个应用
  • 向app.config.globalProperties中添加一些全局实例属性或方法
  • 一个可能上述三种都包含了的功能库(如vue-router)
    插件的定义(注册)
    一个插件可以是一个拥有 install() 方法的对象,也可以直接是一个安装函数本身。安装函数会接收到安装它的应用实例和传递给 app.use() 的额外选项作为参数:
    下面是我定义的一个插件,为了方便管理,在src目录下新建一个plugins文件夹,根据插件的功能,文件夹里面可以放置很多js文件。
    export  default {
      install: (app, options) => {
        // 注入一个全局可用的方法
        app.config.globalProperties.$myMethod = () => {
          console.log('这是插件的全局方法');
        }
        // 添加全局指令
        app.directive('my-directive', {  
          bind (el, binding, vnode, oldVnode) {  
            console.log('这是插件的全局指令');
          }   
        })  
      }
    }

    插件的安装
    我们一般是安装在全局的,这样方便多个组件使用。
    // main.js
    import { createApp } from 'vue'
    import App from './App.vue'
    import ElementPlus from 'element-plus'
    import 'element-plus/dist/index.css'
    import myPlugin from './plugins/myPlugin'
    createApp(App).use(ElementPlus).use(myPlugin).mount('#app');

    插件的使用
    在组件中使用

      
      测试按钮

    效果如下:

    20230223083636014.jpg

    vue3自定义插件的作用场景及使用示例详解6160 作者:Editor 帖子ID:2749 论坛知鸟论坛_zn60.com


    插件中的Provide/inject
    在插件中,还可以通过provide为插件用户提供一些内容,比如像下面这样,将options参数再传给插件用户,也就是组件中。
    // myPlugin.js
    export  default {
      install: (app, options) => {
        // 注入一个全局可用的方法
        app.config.globalProperties.$myMethod = () => {
          console.log('这是插件的全局方法');
        }
        // 添加全局指令
        app.directive('my-directive', {  
          bind () {  
            console.log('这是插件的全局指令');
          }   
        })
        // 将options传给插件用户
        app.provide('options', options);
      }
    }
    // main.js
    import { createApp } from 'vue'
    import App from './App.vue'
    import ElementPlus from 'element-plus'
    import 'element-plus/dist/index.css'
    import myPlugin from './plugins/myPlugin'
    createApp(App).use(ElementPlus).use(myPlugin, {
      hello: '你好呀'
    }).mount('#app');
    // 组件中使用
      
      测试按钮

    效果如下:

    20230223083636015.jpg

    vue3自定义插件的作用场景及使用示例详解2553 作者:Editor 帖子ID:2749 论坛知鸟论坛_zn60.com


    以上就是vue3自定义插件的作用场景及使用示例详解的详细内容,更多关于vue3自定义插件作用的资料请关注知鸟论坛其它相关文章!
  • 发表于 2023-6-28 20:23:53 | 显示全部楼层
    风吹吹蛋蛋疼风w 2023-6-28 20:23:53 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    发表于 2023-6-28 23:30:05 | 显示全部楼层
    Gordon520 2023-6-28 23:30:05 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    发表于 2023-6-29 18:14:36 | 显示全部楼层
    普通人物怨 2023-6-29 18:14:36 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    发表于 2023-6-29 21:46:55 | 显示全部楼层
    心随674 2023-6-29 21:46:55 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    发表于 2023-6-29 22:35:31 | 显示全部楼层
    胡37 2023-6-29 22:35:31 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-6-30 02:26:55 | 显示全部楼层
    落败的青春阳落s 2023-6-30 02:26:55 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    发表于 2023-6-30 07:04:34 | 显示全部楼层
    音乐之家1 2023-6-30 07:04:34 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    发表于 2023-6-30 09:07:15 | 显示全部楼层
    123456848 2023-6-30 09:07:15 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    发表于 2023-7-1 01:16:03 | 显示全部楼层
    123456825 2023-7-1 01:16:03 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    • 您可能感兴趣
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| 小黑屋| 知鸟论坛 |网站地图
    本站资源来自互联网用户收集发布,如有侵权请邮件联系处理。 联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表