美文网首页
vue-插件-编写-use

vue-插件-编写-use

作者: 云高风轻 | 来源:发表于2021-07-17 09:33 被阅读0次

1. 前言

插件听起来高大上,好难呀,好怕呀,那就干它,越来越喜欢这种感觉
可以自己先通过vue add axios安装插件,来看下安装后的axios文件


2. 概念

插件通常用来为 Vue 添加全局功能。

插件的功能范围没有严格的限制——一般有下面几种:

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

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

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

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

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


3. 应用场景

插件可以放到 github npm上,供他人使用


use语法

 Vue.use( plugin )

参数 {Object | Function} plugin

用法:

安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法调用时,会将 Vue 作为参数传入。

该方法需要在调用 new Vue() 之前被调用。

当 install 方法被同一个插件多次调用,插件将只会被安装一次。


4. 插件基础结构

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) {
    // 逻辑...
  }
}

5. 插件实例

还是在之前几篇文章标题组件基础上进行修改的

5.1 单独 插件文件 heading.js

一般都是新建 plugins/heading.js

// 插件需要实现 install 方法
const MyPlugin = {
    install(Vue,options){
        Vue.component("heading", {
            props: {
                level: {
                    type: String,
                    default: "1"
                },
                title: {
                    type: String,
                    default: ""
                },
                icon: {
                    type: String
                }
            },
            render(h) {
                // 子节点数组
                let children = []
                // icon处理
                if (this.icon) {
                    children.push(h(
                        "svg",
                        { class: "icon" },
                        [h("use", {
                            attrs: { 'xlink:href': '#icon-' + this.icon }
                        })]
                    ))
                }
                children = children.concat(this.$slots.default)
                const vnode = h("h" + this.level,
                    { attrs: { title: this.title } },
                    children
                )
                return vnode
            }
        })
    }
 
}
// 确定是在浏览器,而且挂载了Vue对象
if(typeof window !== "undefind" && window.Vue){
        // 使用插件 Vue.use()
        window.Vue.use(MyPlugin)
}

6. 使用

  1. 引用
  2. 写标签
<body>
    <div id="app">
        <heading>默认</heading>
        <heading level="3" title="标题" icon="xihongshi">洋shou? ?番茄? 西红柿</heading>
        </heading>
       
        <svg class="icon">
            <use xlink:href="#icon-xihongshi" />
        </svg>
    </div>

    <script src="./vue.js"></script>
    <script src="./plugins/heading.js"></script>
    <script>

        new Vue({
            el: "#app",
            components: {
            }
        })
    </script>
</body>

7.脚手架项目使用

  1. main.js引入
import './plugins/axios'
import './plugins/heading'
  1. 组件内使用
 <heading>默认</heading>
 <heading level="3" title="标题" icon="xihongshi">洋shou? ?番茄? 西红柿</heading>

8.效果一样

1.png

参考资料

插件
标题组件


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉

相关文章

  • vue-插件-编写-use

    1. 前言 插件听起来高大上,好难呀,好怕呀,那就干它,越来越喜欢这种感觉可以自己先通过vue add axios...

  • Vue插件机制

    插件是实现扩展的重要途径,我们可以根据自己的情况编写一个插件,也可以通过应用程序实例app身上的use方法使用插件...

  • Vue-router(3.1.6)源码阅读——路由的安装

    Vue提供了全局的use方法去安装插件,使用use后会自动执行插件里的intall方法来安装: 这就是use的所有...

  • Vue.use怎么用

    1. 首先vue.use用来注册插件 2.这个插件必须是一个对象 3.步骤是先定义插件,再use,在new 在us...

  • 【vue学习】Vue.use

    一、源码分析 用vue插件时,我们会引入插件后,调用下Vue.use(),如: 为啥要执行下Vue.use()呢?...

  • Mybatis插件底层是怎么加载一个自定义插件的

    大多数框架,都支持插件,用户可通过编写插件来自行扩展功能,Mybatis也不例外。 我们从插件配置、插件编写、插件...

  • 美团一面:你既然写过Mybatis插件,说说它底层是怎么加载一个

    大多数框架,都支持插件,用户可通过编写插件来自行扩展功能,Mybatis也不例外。 我们从插件配置、插件编写、插件...

  • Vue.use源码

    官方对 Vue.use() 方法的说明: 通过全局方法 Vue.use() 使用插件;Vue.use 会自动阻止多...

  • Vue.use() 注册插件(个人笔记)

    Vue.use是什么? 官方对 Vue.use() 方法的说明:通过全局方法 Vue.use() 使用插件,Vue...

  • Vue插件:use

    本章节以添加全局实例方法的方式引入插件为例 一、为什么用use 通过添加全局实例方法引入插件的时候,我们可以再ma...

网友评论

      本文标题:vue-插件-编写-use

      本文链接:https://www.haomeiwen.com/subject/ghaipltx.html