关于低代码:FoxnicWeb-代码生成-9-文件覆盖与扩展

2次阅读

共计 2003 个字符,预计需要花费 6 分钟才能阅读完成。

Foxnic-Web 代码生成 (9) —— 文件笼罩与扩大

概述

  之前的文档中咱们曾多次提及,Foxnic 的代码生成是迭代式的,当表构造变动后,须要从新生成相干的代码。例如某表减少了一个字段,那么对应的表构造元数据须要从新生成。此外,为了保护新加的字段也须要从新生成模块代码。

  这个时候,如果模块代码曾经被开发人员批改,默认状况下,从新生成代码会笼罩开发人员批改过的代码。为了可能重复生成大多数的模块代码 Foxnic 设计了一套机制,尽可将影响降到最低。

  本文中的示例代码均可在 https://gitee.com/LeeFJ/foxni… 我的项目中找到,本文对照 webfull 我的项目解说。

残缺示例

  Foxnic-Web 我的项目提供代码生成的残缺示例,请大家参考:

https://gitee.com/LeeFJ/foxni…

配置笼罩模式

  咱们曾经理解,代码生成时会生成一些列文件,一旦这些文件被批改,就不能够从新生成。代码生成配置类为开发人员提供了 configOverrides 办法,用于确定每组文件的写入模式。示例代码如下:

@Override
public void configOverrides() {
    // 文件生成笼罩模式
    context.overrides()
        .setServiceIntfAnfImpl(WriteMode.COVER_EXISTS_FILE) // 服务与接口
        .setControllerAndAgent(WriteMode.COVER_EXISTS_FILE) //Rest
        .setPageController(WriteMode.COVER_EXISTS_FILE) // 页面控制器
        .setFormPage(WriteMode.COVER_EXISTS_FILE) // 表单 HTML 页
        .setListPage(WriteMode.COVER_EXISTS_FILE) // 列表 HTML 页
        .setExtendJsFile(WriteMode.CREATE_IF_NOT_EXISTS); // 扩大文件
}

  下面的代码为每组代码文件制订了写入模式,写入模式 (WriteMode) 蕴含若干选项:

选项 阐明
WRITE_TEMP_FILE 如果文件曾经存在,在边上生成一个 .code 文件
COVER_EXISTS_FILE 如果文件曾经存在,间接笼罩原始文件; 不存在就创立
CREATE_IF_NOT_EXISTS 如果文件不存在则创立,如果已存在就不解决
IGNORE 齐全疏忽,不做生成任何代码

  如果代码曾经批改,咱们能够思考应用 WRITE_TEMP_FILE 或 IGNORE 模式。WRITE_TEMP_FILE 会在指标文件边上生成一个与指标文件同名的 .code 文件,能够将 .code 文件中的内容拷贝到已批改的源文件中。

文件笼罩标记

  理论的应用中,应用 configOverrides 办法配置源代码的写入模式还是会显的比拟麻烦。如果代码生成工具能够本人辨认代码是否曾经被开发人员批改,这样就会更加不便。智能辨认仿佛有些艰难,然而开发人员能够在文件批改后间接在文件退出一个标记,代码生成工具辨认到这个标记时就不会从新生成改文件。

  在我的项目中,咱们应用 @version 来作为文件已批改的标记,如图所示,在 Java 中能够这样:

  在 Js 文件中能够这样:

  在 Html 文件中能够这样:

逻辑扩大

  Foxnic 代码生成的准则是让开发人员尽量不批改生成的代码文件,然而业务逻辑的调整又无奈回避,那么如何能力和谐两者的矛盾呢?

  Foxnic-Web 通过业务逻辑扩大文件 xxx_ext.js 文件来解决前端代码批改的问题。针对后端代码,间接批改,尚未有这样的逻辑扩大文件。

  开发人员能够为 xxx_ext.js 文件退出 @version 标记,使 xxx_ext.js 文件不再被笼罩。xxx_ext.js 中蕴含了 form 和 list 两个对象,并且内置了诸多回调办法,开发人员能够将业务逻辑写入这些回调办法中,而不用去批改另外 4 个前端页面。这样另外四个前端页面就能够重复刷新代码。

  xxx_ext.js 文件如何应用,咱们此处不做开展,后续章节专门对其进行深入探讨。

小结

  本节主介绍了代码生成的笼罩模式,笼罩模式作用域多个文件组成的代码组。为了不便起见,也能够在源码文件中退出 @version 标记使文件免于笼罩。另外,为了尽可能重复生成代码,咱们引入了 xxx_ext.js 文件的扩大机制。

相干我的项目

  https://gitee.com/LeeFJ/foxnic

  https://gitee.com/LeeFJ/foxni…

  https://gitee.com/lank/eam

  https://gitee.com/LeeFJ/foxni…

官网文档

  http://foxnicweb.com/docs/doc…

正文完
 0