apptools-lab / AppWorks

🐻 基于 VS Code 插件的前端研发工具集,站点国内镜像:https://apptools.gitee.io
https://appworks.site/
MIT License
995 stars 181 forks source link

支持物料开发时调试 #525

Closed sspku-yqLiu closed 3 years ago

sspku-yqLiu commented 4 years ago

背景

在当前的 page 级物料开发链路中,模板开发者没有比较方便的调试手段。

预期的功能

页面模板调试:

产品方案

判断如果是物料项目,则扫描物料文件夹并生成一个调试版的 material.json 。

这个 material.json 与发布版本中的不同,是依据当前物料文件夹(可以是未发布的物料)进行生成的。 当获取物料源信息时,自动添加一个 %%DEBUG%% 物料源到列表中。 在页面模板选择界面 %%DEBUG %% ,则获取当前物料项目页面文件夹的物料。

%%DEBUG%%

在监测到物料源名称为 %%DEBUG%% 后,不会使用从 npm 下载的模式,而是使用从本地复制 npm 包的形式进行物料下载。 之后流程与在普通项目中调试相同,填写页面信息表格:

image-20200911090607761

技术方案

关于生成代码到哪里有如下两个方案:

  1. 生成到 .tmp 文件夹中,与 ice works-cli 完成联动,生成预览页面

    进行配置,点击创建页面,将文件生成到 .tmp 文件夹中。

    image-20200911090743025

    由于 block-service 提供的热加载功能是读取的 .tmp 文件夹下的内容,因此调试页面会变为由配置表单生成的界面。

    如果此时开发者更改 ejs 模板文件,那么会重新触发热加载,预览界面会消失,也许把预览界面和 mocks.js 生成的页面分开比较好?

    至此,开发者不需要代理,在本地即可进行 page 级物料的开发调试。

  2. 生成到一个模拟项目中:

    插件会自动在根目录生成一个调试文件夹 debug/ 用户需要手动进入该文件夹输入npm start 查看生成页面,这样的好处是不会被覆盖掉。

    注意需要将该文件夹添加到 .gitignore 与 .npmignore 中

mileStone (优先开发页面模板)

alvinhui commented 4 years ago

判断是物料项目工作区然后在插件层面做一些适配的思路不错。

我觉得可以再进一步,就是:当工作区是物料项目的时候,这时候 Iceworks 物料源完全使用当前物料项目的数据,所有处理流程都是读取本地数据。

这样子我们基于物料的一些功能,诸如区块组装、添加区块都可以调试了。

当然上面这个方案涉及到的改造点比较多,但应该是一个「终极方案」。

alvinhui commented 4 years ago

我更新了一下产品方案,技术方案有些不太明确。 @sspku-yqLiu

几点提示:

物料源信息示例:https://ice.alicdn.com/assets/materials/react-materials.json

sspku-yqLiu commented 4 years ago

具体流程链路

对物料开发者:

技术手段:

alvinhui commented 4 years ago
  • 生成调试结果

对物料开发者:

  1. 打开一个 Iceworks 支持的项目
  2. 通过命令面板开始调试功能
  3. 选择需要调试的本地物料项目文件夹
  4. 开始用该物料项目进行开发

技术手段:

  1. 选择需要调试的本地物料项目文件夹
    • 生成 source 字段为本地的 material json
    • 将生成的 material.json 添加到当前的设置中
  2. 开始用该物料项目进行开发
    • 使用 iceworks:ui-builder 的区块组装页面、模板生成页面、模板生成项目等功能
    • 为相关下载功能兼容本地模式,即从本地进行复制