Evan's blog Evan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)

conanan

真相只有一个
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)
  • 基础

  • 组件

  • 动画

  • Composition Api

  • 高级语法

    • h 函数 & JSX
    • 自定义指令
    • Teleport
    • 插件
      • 介绍
      • 示例
    • nextTick与eventloop
    • historyApiFallback
  • Vue源码

  • VueCLI&Vite

  • VueRouter

  • Vuex

  • 项目

  • Vue3.x
  • 高级语法
xugaoyi
2022-03-24
目录

插件

# 插件

# 介绍

通常我们向Vue全局添加一些功能时,会采用插件的模式,它有两种编写方式:

  • 对象类型:一个对象,但是必须包含一个 install 的函数,该函数会在安装插件时执行;
  • 函数类型:一个function,这个函数会在安装插件时自动执行;

插件可以完成的功能没有限制,比如下面的几种都是可以的:

  • 添加全局方法或者 property,通过把它们添加到 config.globalProperties 上实现;
  • 添加全局资源:指令/过滤器/过渡等;
  • 通过全局 mixin 来添加一些组件选项;
  • 一个库,提供自己的 API,同时提供上面提到的一个或多个功能;

# 示例

/src/plugins/plugins_object.js

export default {
  install(app) {
    app.config.globalProperties.$name = "coderwhy"
  }
}
1
2
3
4
5

/src/plugins/plugins_function.js

export default function(app) {
  console.log(app);
}
1
2
3

/src/main.js

import { createApp } from 'vue'

import pluginObject from './plugins/plugins_object'
import pluginFunction from './plugins/plugins_function'

const app = createApp(App)

// 这里底层自动执行 plugin.install(app)
app.use(pluginObject)
app.use(pluginFunction)

app.mount('#app')
1
2
3
4
5
6
7
8
9
10
11
12

使用该属性

<template>
</template>

<script>
  import { getCurrentInstance } from "vue";

  export default {
    // setup 只能通过该方式获取。其他的正常使用 this 即可
    setup() {
      const instance = getCurrentInstance();
      console.log(instance.appContext.config.globalProperties.$name);
    },
    mounted() {
      console.log(this.$name);
    },
    methods: {
      foo() {
        console.log(this.$name);
      }
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
编辑 (opens new window)
上次更新: 2022/03/24, 16:45:21
Teleport
nextTick与eventloop

← Teleport nextTick与eventloop→

最近更新
01
重点
04-12
02
搭建项目
04-04
03
TS补充
03-30
更多文章>
Theme by Vdoing | Copyright © 2019-2022 conanan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式