Skip to content

插件开发

什么是插件式开发?

框架插件式的开发可具备一个开放性、可扩展性强、灵活可配置的系统,它允许开发人员自由地选择各种功能模块组合成一个完整的应用系统,从而达到提升开发效率、降低开发难度、节省资源消耗等目标。插件式的框架对系统开发者和用户来说都有利,可以有效地解决复杂系统开发难题,提高软件质量和系统稳定性。除此之外,插件式框架还可以对各个模块进行分离开发,提高软件维护性,降低软件开发成本。

如何编写插件

javascript

export default class ExamplePlugin {

    constructor() {
        this.name = 'ExamplePlugin'
        this._enable = false
    }

    // 安装插件
    install({ctx}, options) {
        this._enable = true;
        // ctx当前插件的上下文,包含vue全局对象app,pinia全局对象,以及其他插件的上下文
    }

    // 禁用插件
    disable() {
        this._enable = false;
    }

    // 启用插件
    enable() {
        this._enable = true;
    }

    // 销毁插件
    destroy() {
    }

    // 查看插件是否启用
    inEnabled() {
        return this._enable
    }
}
// 导出插件
export const useExamplePlugin = new ExamplePlugin()

开发例子

这里我用来开发一个常用的拦截请求插件,

javascript

export class AlovaPlugin {
    constructor() {
        this.name = 'AlovaPlugin'
        this.Authorization = null
    }

    install({ctx}, options) {
        // 这里拦截所有的请求,每次请求都带上这个令牌
        ctx.http.alovaInstance.options.beforeRequest = (method) => {
            if (!this.Authorization) {
                this.Authorization = localStorage.getItem('token')
            }
            method.config.headers['Authorization'] = `Bearer ${this.Authorization}`
        }
    }
}

export const useAlovaPlugin = new AlovaPlugin()
javascript
import install from "vue-bag-admin"
const {app, framework, plugins} = install()

framework.use(useAlovaPlugin) // 编写完插件后,注册它
app.mount('#app')