Vue3.0:编写插件

MyDirective文件下 MyDirective.ts、index.ts 两个文件

添加 MyDirective.ts 文件

复制代码
import type { Plugin } from 'vue';

const MyPlugin: Plugin = {
  install(app, options) {
    // 添加全局组件
    app.component('MyComponent', {
      // 组件定义...
    });

    // 添加全局指令
    app.directive('my-color', {
      // 指令定义...
      mounted(el, binding) {
        el.style.color = binding.value;
      }
    });

    // 添加全局方法或属性
    app.config.globalProperties.$myMethod = (text: any) => {
      // 方法实现...
      console.log(text);
    };

    // 还可以根据 options 参数来配置插件
    console.log('MyPlugin options:', options);
  },
};

export default MyPlugin;

index.ts

复制代码
import MyDirective from './MyDirective';
export default {
  install: (app: any, options?: any) => {
    app.use(MyDirective);
  }
};

main.ts

复制代码
import MyColor from './plugin/MyDirective/index';
import { createApp } from 'vue';
const app = createApp(App);
app.use(MyColor);

使用

复制代码
<template>
  <div v-my-color="someValue1">Hello, world!!!!!!!!!</div>
  <div>{{ $myMethod(111111) }}</div>
</template>

<script setup>
import { getCurrentInstance, onMounted } from 'vue';
const instance = getCurrentInstance();
onMounted(() => {
  myMethod(222222);
});
</script>
相关推荐
小码哥_常3 分钟前
Android 开发秘籍:用Tint为Icon动态变色
前端
小码哥_常3 分钟前
从0到1手把手封装Android基类Activity/Fragment,告别重复代码,开发效率直接拉满!
前端
ChoriaKiinweill3 分钟前
不会有人现在还不了解BOM的知识吧? 关于它的一切都在这里!!!
前端
ChoriaKiinweill4 分钟前
我们最爱操纵的DOM是个什么玩意? 关于DOM的知识快速一览!
前端
毛骗导演6 分钟前
万字解析 OpenClaw 源码架构-代理系统(二)
前端·架构
im_AMBER6 分钟前
从0到1实现块级编辑器的文件导入
前端·架构
不可能的是7 分钟前
彻底搞懂 Module Federation(中中):MF 模块加载(上)
前端·webpack
毛骗导演7 分钟前
万字解析 OpenClaw 源码架构-工具与自动化
前端
毛骗导演9 分钟前
万字解析 OpenClaw 源码架构-代理系统(一)
前端·架构
波哥学开发9 分钟前
🎯 Canvas 箭头绘制算法(附完整源码)
前端·计算机图形学