# 1. 介绍

cnchar 提供了一个非常简洁的插件体系,可以很方便的基于cnchar功能开发一个新的插件

一个 cnchar 插件只有一个必选属性 pluginName

表示插件名称,cnchar.use 插件之后,会注入到 cnchar.plugins 中,且插件对象会被挂载到 cnchar 上

cnchar 所有现有插件都会携带有 dict属性用来暴露内部的字典,以方便其他插件可以直接使用,具体请参考插件声明 (opens new window)

可以使用 hasPlugin api 来判断是否引入了某插件

cnchar.hasPlugin('draw')

# 2. install属性

install 是一个方法,cnchar.use 插件之后, cnchar对象会调用install方法,并将cnchar对象作为回调带入插件中,可以通过cnchar对象访问cnchar和其他插件方法

# 3. getCnChar

插件被安装成功之后,会注入一个 getCnChar 到插件上,可以获取到cnchar对象

其他插件属性可以参考 common.d.ts (opens new window)

# 4. js定义插件

export default {
    pluginName: 'custom',
    install (cnchar) {
        console.log(cnchar);
    },
    version: '0.0.1',
    log: () => console.log('hello cnchar-plugin!');
}

# 5. ts定义插件

如果使用ts,则可以安装 cnchar-types 来添加cnchar声明,当然这不是必须的

推荐使用 cnchar-types, 首先需要安装 cnchar-types

npm i cnchar-types
import ICnChar, {IPlugin} from 'cnchar-types';

const plugin: IPlugin = {
    pluginName: 'custom',
    install (cnchar: ICnChar) {
        console.log(cnchar);
    },
    version: '0.0.1',
    log: () => console.log('hello cnchar-plugin!');
};

declare module 'cnchar-types/main/index' {
    interface ICnChar {
        custom: {
            pluginName: 'custom';
            version: string;
            log: () => void;
        };
    }
}

export default plugin;

不使用 cnchar-types

const plugin: {
    pluginName: string;
    install: (cnchar: any) => any;
} = {
    pluginName: 'custom',
    install (cnchar: any) {
        console.log(cnchar);
    },
    version: '0.0.1',
    log: () => console.log('hello cnchar-plugin!');
};
export default plugin;
最后更新于: 6/19/2022, 1:05:50 AM