一段VUE代码:通过组件封装全局方法、自定义指令和注册组件

index.js

// 插件定义第一种方式,对象:拥有 install() 方法的对象
const myPlugin = {
  install(app, options) {
    // 配置全局方法
    app.config.globalProperties.globalMethod = function (value) {
      return value.toLowerCase();
    };
    // 注册全局组件
    app.component('Header', Header);
    // 注册全局指令
    app.directive('upper', function (el, binding) {
      // 通过指令参数判断调用插件的options可选参数
      el.textContent = binding.value.toUpperCase();
      if (binding.arg === 'small') {
        el.style.fontSize = options.small + 'px';
      } else if (binding.arg === 'medium') {
        el.style.fontSize = options.medium + 'px';
      } else {
        el.style.fontSize = options.large + 'px';
      }
    });
  }
};


/*
// 函数插件:另一种方法
const myPlugin = function (app, options) {
  // 配置全局方法
  app.config.globalProperties.globalMethod = function (value) {
    return value.toLowerCase()
  }
  // 注册全局组件
  app.component("Header", Header)

  // 注册全局指令
  app.directive("upper", function (el, binding) {
    // 通过指令参数判断调用插件的options可选参数
    el.textContent = binding.value.toUpperCase() 
    if (binding.arg === "small") {
      el.style.fontSize = options.small + "px"
    } else if (binding.arg === "medium") {
      el.style.fontSize = options.medium + "px"
    } else {
      el.style.fontSize = options.large + "px"
    }
  })
}
*/

export default myPlugin;

  

上面这个插件的用法:

import { createApp } from 'vue';
import App from './App.vue';
import myPlugins from './myPlugins' // 引入插件

const app = createApp(App);
// 安装插件
app.use(myPlugins, {
  small: 12,
  medium: 24,
  large: 36,
});
app.mount('#app');

  

posted @ 2024-11-21 09:17  充实地生活着  阅读(7)  评论(0编辑  收藏  举报