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


相关文章
|
9天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
65 1
|
20天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
2月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
50 1
vue学习第一章
|
2月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
46 1
|
2月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
35 1
|
2月前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
37 1
|
2月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
2月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能