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>
相关推荐
Merlyn1020 分钟前
npm : 无法加载文件 E:\ProgramFiles\Nodejs\npm.ps1,因为在此系统上禁止运行脚本。
前端·npm·node.js
一个打工仔的笔记20 分钟前
npm i 失败权限问题
前端·npm·node.js
heroboyluck22 分钟前
rust 前端npm依赖工具rsup升级日志
前端·rust·npm
咔咔库奇40 分钟前
【react】进阶教程02
前端·react.js·前端框架
七灵微1 小时前
【前端】react大全一本通
前端·react.js·前端框架
初遇你时动了情1 小时前
react使用react-quill 富文本插件、加入handlers富文本不显示解决办法
前端·javascript·react.js
海上彼尚1 小时前
RawShaderMaterial 与 ShaderMaterial
前端·javascript
网络安全-老纪1 小时前
【网络安全】常见的web攻击
前端·安全·web安全
一直走下去-明1 小时前
next.js-学习2
开发语言·javascript·学习
小仙有礼了1 小时前
ArcGis for js 4.x实现测量,测距,高程的功能
javascript·算法·arcgis