首页 > 其他分享 >认识Vue扩展插件

认识Vue扩展插件

时间:2022-08-18 09:22:39浏览次数:77  
标签:... 插件 Vue vue 扩展 添加 install

众所周知,在 Vue 开发中,实现一个功能可以有很多种方式可以选择,这依赖于 Vue 强大的功能(指令、混合、过滤等)

Vue 插件

插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制——一般有下面几种:

  • 添加全局方法或者 property。如:vue-custom-element

  • 添加全局资源:指令/过滤器/过渡等。如 vue-touch

  • 通过全局混入来添加一些组件选项。如 vue-router

  • 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。

  • 一个库,提供自己的 API,同时提供上面提到的一个或多个功能。如 vue-router

使用插件

vue引入的插件,如 element , 都需要提供 install 方法,因为 Vue.use() 方法会调用插件里的 install 方法

import Vue from 'vue'
import Element from 'element-ui'

Vue.use(Element)

全局组件

类似的
全局组件也是同样的做法,在 install 方法里面 进行 组件 注册

import ColorIconComponents from './iconColor.vue'

const ColorIcon = {
    install: function (Vue) {
        Vue.component('ColorIcon', ColorIconComponents)
    }
}

export default ColorIcon

绑定prototype

数组对象等绑定自定义方法

// path: src/utils/customFn.js
export default {
  install(Vue) {
    // 数组对象排序 asc-升序 des-降序
    Array.prototype.sortListObjByKey = function (key, order = 'asc') {
      const that = this
      const comparefn = (obj1, obj2) => {
        if (order === 'asc') {
          return obj1[key] - obj2[key]
        } else {
          return obj2[key] - obj1[key]
        }
      }
      return that.sort(comparefn)
    }
  }
}

使用

// path: src/main.js
import customFn from "./libs/customFn";

Vue.use(customFn)

开发插件范式

来源

Vue.js 的插件应该暴露一个 install 方法。这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象:

MyPlugin.install = function (Vue, options) {
  // 1. 添加全局方法或 property
  Vue.myGlobalMethod = function () {
    // 逻辑...
  }

  // 2. 添加全局资源
  Vue.directive('my-directive', {
    bind (el, binding, vnode, oldVnode) {
      // 逻辑...
    }
    ...
  })

  // 3. 注入组件选项
  Vue.mixin({
    created: function () {
      // 逻辑...
    }
    ...
  })

  // 4. 添加实例方法
  Vue.prototype.$myMethod = function (methodOptions) {
    // 逻辑...
  }
}

标签:...,插件,Vue,vue,扩展,添加,install
From: https://www.cnblogs.com/all-smile/p/16597567.html

相关文章

  • 油猴扩展 百度/阿里网盘下载 直链解析 免客户端 免会员 不限速
    第一步:安装浏览器扩展Tampermonkey是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于Chrome,MicrosoftEdge,Safari,OperaNext,和Firefox。地址:https:/......
  • vue中改变数组对象属性名名称
    letnape=[];for(leti=0;i<list.length;i++){letres=JSON.parse(JSON.stringify(list[i])......
  • vue 入门
    idea、webstorm、vsCode,都可以开发吧,脚手架vue-cli项目框架一搭建,就写代码了 --关于vue需要掌握的知识点--- 使用的开发工具是webstorm,它是默认就安装好了vuejs......
  • vue数据双向绑定
    vue数据双向绑定 <divid="app">单向数据绑定:<inputtype="text"v-bind:value="txt"><br><br>双向数据绑定:<inputtype="text"v-model:va......
  • vue学习之------vue-router【命名路由】
    命名路由的概念:就是在定义路由规则时,为当前规则去一个名称,增加name属性。name属性不能重复,必须保证唯一性~ (1)用命名路由实现声明式导航  (2)命名路由实现编程......
  • vue学习之------vue-router【编程式导航】
    通过调用API实现导航的方式,叫编程式导航。通过点击链接实现导航的方式,叫声明式导航。 (1)跳转到指定地址的API:this.$router.push('hash地址')(2)实现导航历史的前进、......
  • vue学习之------vue-router【动态路由】
    动态路由的概念:把hash地址中的可变部分用【英文冒号(:)+参数】的形式进行定义获取动态路由的参数值:(1)第一种获取方式:可以直接使用$route.params对象访问到动态匹配的参数......
  • Vue 数据绑定
    数据绑定案例1:<divid="app"><h1><a:href="url">{{name}}</a></h1></div>  <script>    newVue({  ......
  • vue学习之------vue-router【路由嵌套】
    1、声明子路由链接和子路由占位符<template><h2>>>about组件</h2><!--子路由链接--><router-linkto="/about/tab1">选项一</router-link> <router-link......
  • Vue项目 invalid host header 问题 配置 disableHostCheck:true报错
    项目场景:解决Vue项目invalidhostheader问题disableHostCheck:true报错问题描述使用内网穿透时出现invalidhostheader找了好多都是让配置vue.config.js系统......