vue-插件-编写-use

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

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.效果一样


L_[CRIEX1Z[CC{G)B662YI8.png


相关文章
|
5天前
|
JavaScript
vue消息订阅与发布
vue消息订阅与发布
|
2天前
|
JavaScript
理解 Vue 的 setup 应用程序钩子
【10月更文挑战第3天】`setup` 函数是 Vue 3 中的新组件选项,在组件创建前调用,作为初始化逻辑的入口。它接收 `props` 和 `context` 两个参数,内部定义的变量和函数需通过 `return` 暴露给模板。`props` 包含父组件传入的属性,`context` 包含组件上下文信息。`setup` 可替代 `beforeCreate` 和 `created` 钩子,并提供类似 `data`、`computed` 和 `methods` 的功能,支持逻辑复用和 TypeScript 类型定义。
20 11
|
6天前
|
JavaScript 前端开发 IDE
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
|
4天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
14 4
|
4天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
15 4
|
6天前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
|
4天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
14 2
|
6天前
|
JavaScript 前端开发 API
Vue学习笔记7:使用v-for指令渲染列表
Vue学习笔记7:使用v-for指令渲染列表
|
7天前
|
JavaScript
vue组件中的插槽
本文介绍了Vue中组件的插槽使用,包括单个插槽和多个具名插槽的定义及在父组件中的使用方法,展示了如何通过插槽将父组件的内容插入到子组件的指定位置。