alibaba / lowcode-engine

An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系
https://lowcode-engine.cn
MIT License
14.68k stars 2.55k forks source link

@alilc/lowcode-plugin-inject使用中在引擎初始化侧引入插件说明文档中assets怎么设置 #1867

Closed springHyc closed 1 year ago

springHyc commented 1 year ago

Describe the bug (required) / 详细描述 bug(必填)

在说明文档中:低代码生态脚手架 & 调试机制自己初始化的项目中想要使用@alilc/lowcode-plugin-inject包。在说明文档中有这样的介绍:

import Inject, { injectAssets } from '@alilc/lowcode-plugin-inject';
import { IPublicModelPluginContext } from '@alilc/lowcode-types';

export default async () => {
  // 注意 Inject 插件必须在其他插件前注册,且所有插件的注册必须 await
  await plugins.register(Inject);
  await plugins.register(OtherPlugin);
  await plugins.register((ctx: IPublicModelPluginContext) => {
    return {
      name: "editor-init",
      async init() {
        // 设置物料描述前,使用插件提供的 injectAssets 进行处理
        const { material, project } = ctx;
        material.setAssets(await injectAssets(assets));
      },
    };
  });
}

问题有2:

  1. material.setAssets(await injectAssets(assets));中的assets哪里来的?
  2. “如果希望预览态也可以注入调试组件,则需要在 preview 逻辑里插入组件”这介绍的代码,我没有加入,同样可以在预览时可以注入我正在调试的物料呢?
eternalsky commented 1 year ago

额,第一个问题问的很奇怪,正常你的项目不就需要做 material.setAssets(assets) 吗,否则你的项目里怎么会有物料。那这个项目不就是一个空壳了。这里只是说你在 set 之前,先被 injectAssets 处理一下。 第二个问题,就更看不懂了,如果1你都没有 set 过 assets,那你预览里看到的是什么呢。