1️⃣ 插件的基本认识

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

  1. 1. 添加全局方法或者 property。如:vue-custom-element
  2. 2. 添加全局资源:指令/过滤器/过渡等。如:vue-touch
  3. 3. 通过全局混入来添加一些组件选项。如:vue-router
  4. 4. 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
  5. 5. 一个库,提供自己的 API,同时提供上面提到的一个或多个功能。如:vue-router

1️⃣ 使用插件

  1. // 定义插件
  2. 对象.install = function ( Vue, options ){
  3. // 1. 添加全局过滤器
  4. Vue.filter(...)
  5. // 2. 添加全局指令
  6. Vue.directive(...)
  7. // 3. 配置全局混入
  8. Vue.mixin(...)
  9. // 4. 添加实例方法
  10. Vue.prototype.fun = (options) => {...}
  11. }
  12. // 使用插件
  13. Vue.use()

image.png

  1. // plugins.js
  2. // 定义插件
  3. export default {
  4. install(Vue, num) {
  5. console.log(Vue); // Vue 就是 Vue 对象
  6. console.log(num); // 插件可以获取多个参数
  7. // 过滤器
  8. Vue.filter("myFilter", (v) => {
  9. return v.slice(0, 5);
  10. });
  11. // 自定义指令
  12. Vue.directive("dir", {
  13. bind(el) {
  14. el.innerText = "自定义指令";
  15. },
  16. });
  17. // 全局函数
  18. Vue.prototype.fun = (v) => {
  19. console.log(`定义全局函数, 参数为${v}`);
  20. };
  21. },
  22. };
  1. // main.js
  2. import Vue from "vue";
  3. import App from "./App.vue";
  4. Vue.config.productionTip = false;
  5. // 引入插件
  6. import plugins from "./plugins";
  7. // 为插件传入多个参数
  8. Vue.use(plugins, 100);
  9. new Vue({
  10. render: (h) => h(App),
  11. }).$mount("#app");
  1. // app.vue
  2. <template>
  3. <div id="app">
  4. <div>{{ "123456789" | myFilter }}</div>
  5. <div v-dir></div>
  6. <div @click="fun('参数')">插件的全局函数</div>
  7. </div>
  8. </template>
  9. <script>
  10. export default {
  11. name: "App",
  12. data() {
  13. return {};
  14. },
  15. };
  16. </script>