跳到主要内容
版本:Next

自定义模板

luban使用scriban 模板引擎来生成代码,也使用这个模板来生成自定义的文本型数据文件。

源项目中模板位置

由于模块化,一般是每个子项目有独立的模板目录,而不是统一放到一个目录下。位置为{proj}/Templates,例如 Luban.Csharp/Templates。 为了最终发布时这些模块文件也会被复现到发布目录,对于每个模板文件,需要右键->属性,复制选项设置为Copy Always或者Copy if newer

发布后自定义模板搜索路径

发布后,所有模板文件都会被统一复制到输出目录的Templates目录。如果需要自定义模板,尽管可以直接修改Templates目录下的模板文件, 但每次更新Luban会覆盖自己的实现,不是很方便。你可以使用命令行参数"--customTemplateDir ${templatir}" 用于指定优先搜索路径。

代码模板环境变量

对于像cs这样的需要enum、bean、table、tables分开生成不同代码文件的语言,为每类对象的生成模板提供了默认机制。

enum

变量名描述
__ctx当前GenerationContext变量
__name枚举名
__namespace枚举的命名空间
__top_module顶层命名空间,即target.TopModule
__namespace_with_top_module包含topModule的命名空间
__full_name_with_top_module包含topModule的全名
__enum当前枚举定义对象
__this同__enum
__code_style当前代码风格

bean

变量名描述
__ctx当前GenerationContext变量
__manager_nametarget.manager值
__manager_name_with_top_module包含topModule的target.manager
__name结构名
__namespace命名空间
__top_module顶层命名空间,即target.TopModule
__namespace_with_top_module包含topModule的命名空间
__full_name_with_top_module包含topModule的全名
__bean当前bean定义对象
__this同__bean
__code_style当前代码风格

table

变量名描述
__ctx当前GenerationContext变量
__manager_nametarget.manager值
__manager_name_with_top_module包含topModule的target.manager
__name结构名
__namespace命名空间
__top_module顶层命名空间,即target.TopModule
__namespace_with_top_module包含topModule的命名空间
__full_name_with_top_module包含topModule的全名
__table当前table定义对象
__this同__table
__code_style当前代码风格
__key_typetable的key类型
__value_typetable的value类型

tables

变量名描述
__ctx当前GenerationContext变量
__nametarget.manager值
__namespacetarget.topModule
__tables当前导出的tables列表
__this同__table
__code_style当前代码风格