- core 核心代码,插件内核,提供插件运行时,管理插件加载,运行,卸载等生命周期(类比浏览器)
- api 接口,plugin 插件运行时需要的接口 (类别window)
- plugin 互相独立的模块,提供单一功能 (类比不用网页)
浏览器 -- url --- 网页 core ---- api ---- plugin
//plugin
function plugin(a,b){
return a + b
}
//api
function pluginApi(core){
core({
name:'plugin1',
fn:plugin1
})
}
//core
const core = {
use(pluginApi){
const {name,pluginFn} = pluginApi
this[name] = pluginFn
},
install(plugin){
plugin(this)
}
}
const {core,pluginAdd} = require('plugin-tools')
core.install(pluginAdd)
console.log(core['pluginAdd'](1,2))