33.Vue插件

2021-09-08  本文已影响0人  静昕妈妈芦培培

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

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

插件的编写方式

export default {
  install(app) {
    app.config.globalProperties.$name = 'coderwhy'
  }
}
export default function(app) {
  app.config.globalProperties.$age = 18
}

注册插件
main.js

import { createApp } from "vue";
import App from "./3_otherApi/4_teleport内置组件/App.vue";
import registerDirectives from "./directives/index";
import plugins_objects from './plugins/plugins_objects'
import plugins_function from './plugins/plugins_function'
const app = createApp(App);
//注册插件
app.use(plugins_objects)
app.use(plugins_function)

app.use(registerDirectives);
app.mount("#app");

例:使用插件的方式注册全局属性

/plugins/plugins_function.js

export default function(app) {
  app.config.globalProperties.$age = 18
}

注册插件
main.js

import { createApp } from "vue";
import App from "./3_otherApi/4_teleport内置组件/App.vue";
import plugins_function from './plugins/plugins_function'
const app = createApp(App);
//注册插件
app.use(plugins_function)
app.mount("#app");

App.vue

<template>
  <!--模板中获取全局属性-->
  <div>{{$age}}</div>
</template>

<script>
import { getCurrentInstance } from "vue";
export default {
  //setup中获取全局属性
  setup() {
    //获取组件实例
    const instance = getCurrentInstance();

    console.log(
      instance.appContext.config.globalProperties.$age
    );
  },
  //optionsApi中获取全局属性
  mounted() {
    console.log( this.$age);
  },
};
</script>

<style lang="scss" scoped></style>

此文档主要内容来源于王红元老师的vue3+ts视频教程

上一篇 下一篇

猜你喜欢

热点阅读