0.3.1 • Published 1 year ago
@versea/plugin-sandbox v0.3.1
@versea/plugin-sandbox
给应用增加沙箱能力
安装
npm install --save @versea/versea @versea/plugin-source-entry @versea/plugin-sandbox
使用
import { Versea } from '@versea/versea';
import { IPluginSourceEntry } from '@versea/plugin-source-entry';
import { IPluginSandbox } from '@versea/plugin-sandbox'
const versea = new Versea({ defaultContainer: '#microApp' });
versea.use(IPluginSourceEntry);
versea.use(IPluginSandbox)
// 注册子应用
versea.registerApps([
{
name: 'subApp',
routes: [
{
path: 'sub-app',
pathToRegexpOptions: {
end: false,
},
},
],
scripts: [
'http://localhost:3000/static/js/bundle.js'
],
},
]);
// 在合适的时机启动 versea
void versea.start();
Hooks
本插件新增的所有 Hook,参考interface。
Load 和 Mount 生命周期
变更 @versea/plugin-source-entry 的 hooks
loadApp
- TapName: PLUGIN_SOURCE_ENTRY_CREATE_CONTAINER_TAP 创建容器
- TapName: PLUGIN_SOURCE_ENTRY_TAP 加载资源文件
- TapName: PLUGIN_SANDBOX_TAP 创建沙箱
(新增)
,可以在这个之后增加 hook 修改沙箱或直接替换这个 hook 替换沙箱 - TapName: PLUGIN_SOURCE_ENTRY_UPDATE_LIFECYCLE_TAP 重写应用生命周期函数
mountApp
- TapName: PLUGIN_SOURCE_ENTRY_RENDER_CONTAINER_TAP 渲染容器
- TapName: PLUGIN_SANDBOX_TAP 启动沙箱
(新增)
- TapName: PLUGIN_SOURCE_ENTRY_EXEC_SOURCE_TAP 执行资源文件
- TapName: PLUGIN_SANDBOX_EFFECT_TAP: 记录或重置沙箱副作用
(新增)
- TapName: PLUGIN_SOURCE_ENTRY_EXEC_LIFECYCLE_TAP 执行应用 mount 生命周期函数
unmountApp
- TapName: PLUGIN_SOURCE_ENTRY_EXEC_LIFECYCLE_TAP 执行应用 unmount 生命周期函数
- TapName: PLUGIN_SANDBOX_TAP 停止沙箱
(新增)
- TapName: PLUGIN_SOURCE_ENTRY_REMOVE_CONTAINER_TAP 销毁容器
loadSource
- TapName: PLUGIN_SANDBOX_TAP 加载资源文件
(新增)
execSource
- TapName: PLUGIN_SOURCE_ENTRY_TAP 使用沙箱环境执行资源文件
(替换)
特别声明
本插件借鉴了 micro-app 和 qiankun 的沙箱方案,后期关注沙箱是否可以使用其他开源项目的实现。