Zhiqim Markup Language是知启蒙定义的、类似于JavaJavascript语法的语句和表达式,通常和XML/HTML混编在一起形成的一种新的标记语言。 ZML力求简单易用,目前支持常用的十二种标记语句和五十种表达式,在知启蒙技术体系中被用来代替JSP。

森中灵 最后提交于1年前 整理V8.0.6
version.txt6KB
V1.1.0.R2015072901版本:从原V1.0的fadfox_httpd.jar中分离出来
V1.1.0.R2015090201版本:根据fadfox整理成统一该版本
V1.1.1.R2015091401版本:使用JDK1.7编译
V1.1.2.R2015093001版本:要求使用V1.1.2版本的fadfox.jar
V1.1.2.R2015102201版本:支持从AnStatic,AnGlobal,AnNew中读取系统变量
V1.1.2.R2015102601版本:修改for语句方法
V1.1.3.R2015112501版本:整理版本,用于生产系统
V1.1.3.R2015122901版本:根据FTimer改动修改的版本
V1.1.3.R2016020301版本:春节前整理版本号
V1.1.4.R2016041701版本:增加<#include>
V1.2.0.R2016072101版本:
    1)修改<#for>标签为<#for (item : list)>支持括号和<#for (var item : list)>严格模式
    2)增加new和.class表达式,以支持<#var abc = new Abc()/>和<#var list=Global.get(FTable.class).list(Abc.class)>
    3)增加<#interceptor>支持在ftm中写拦截器
    4)增加包和点号的参数的支持,如com.zhiqim.fadfox.Boot可以是包名,fadfox.manager可以是变量名,属性请使用["property"],如fadfox["key"]
    5)增加TemplateVarNotice,当上下文文件context.ftml有改动时,回调更新
V1.2.1.R2016100801版本:
    1)增加TemplateEngine.hasTemplate方法,用于使用前先判断是否存在
    2)修改原后缀.ftml,.ftm为三个(.ftml,.ftm,.htm)
    3)增加<#def>语句,表<#var>类似用于定义变量,但<#def>会优先从include中执行
    4)修改${}原名_Apply,修改为_Echo,调用并显示结果,意思更清晰
V1.2.2.R2017010101版本:
    1)配合fadfox.jar调整HashMap<String, Object>为FHashMapSO
    2)增加return,break,continue的支持,其中function支持<#return "result"/>带结果,template结果会强制转为字符串,for支持break,continue
    3)修改TemplateVariable为支持传入variableMap和contextMap数组(原功能写死只支持requestVariableMap和contextVariableMap)
    4)增加<#break> <#return>和<#continue>,完善了function,for,和if语句
    5)增加对类属性的支持,如variable.property时,如果variable是变量会判断是否有属性[property],但优先级低于本身[variable.property]是一个变量
    6)调整对类全称的支持,如com.zhiqim.fadfox.bootstrap.Global.get(Abc.class),会把(com.zhiqim.fadfox.bootstrap.Global)作为类名,为后续引入<#import>作准备
    7)增加Java.util和java.lang一些常用类,如String,List等作了全称和别名的配置,以使支持<#var abc = new ArrayList()/>常用类的写法
    8)删除AnStatic的支持,增加当变量是类时,先暂存变量结构到_Variable中,在碰到_Method,_Property时支持读取静态变量/常量和调用静态方法,
        1、如${FadfoxConstants.F_NAME}是支持的
        2、如@{System.out.println("abc")}也支持
    9)调整和TemplateNotice接口,统一把Map通知,以前是逐个通知,不利于刷新整个变量表
    10)修改_Interceptor拦截后成异常的BUG
    11)增加pattern的设置的支持,以前固定为["*.ftml",*.htm,*.ftm]
    12)修改process(OutputStream out)时不主动out.flush(),由业务自己触发,否则会引起chuncked
V1.3.0.R2017022701版本:
    1)增加Templates.format(ftml)方法,格式化后不显示代码,而显示字符串
    2)增加_Format语句(#{})支持,对${}的结果进行格式化,相当于${Templates.format(value)}
V1.3.1.R2017052801
    1)修改Asserts.asserts为Asserts.as()方法,使用三目运算断言,防止断言为真时需要初始化无意义的断言失败字符串
    2)增加双点号支持括号
V1.3.2.R2017080501
    1)修改<#for>的遍历,原为Collection,改为Iterable,扩大遍历范围
    2)修改<#function>,原在include时有效,修改为当前模板都有效
    3)修改变量表定义为FLinkedHashMapSV,原来是HashMap,没有顺序
    4)修改#{},格式化增加对\',\"处理成&apos;&quot
V1.3.3.R2017110601
    1)解决<#for>里面注释<#---->的BUG
V1.4.0.R2018010101
    1)正式启用ZhiqimML名称,原所有Fadfox改为Zhiqim,原所有fadfox改为zhiqim,原所有FADFOX改为ZHIQIM
    2)增加支持自定义的TemplateLoader的子类,如数据库的模板方式
    3)调整模板查找方式为倒序查找
    4)支持三目运算?:
    5)解决三个系统(Windows,Linux,Mac)对\r\n的处理上的不同导致的BUG
    6)增加_Method对前面的_New进行检查,如果是_New,则优先组合成构造函数,比后面的_Dot操作优先级高
    7)修改模板未找到时响应FileNotFoundException,原来显示不正确
    8)删除对@AnNew的自动newInstance的支持,改成要求前缀new,如new Selector(),而不能直接使用Selector
    9)修改Template为ZML,统一使用ZML代替模板
    10)增加ZmlVarRuntime类,以支持变量运行时实时调用build生成结果
    11)增加对ZmlVarRuntime在_Method中检查,得到build结果
    12)增加三目运算对null的判断为false(采用js的判断方式,有利于该字段未定义表示false)
V1.4.1.R2018072501
    1)修改Timer为Every,使用ZhiqimKernelV1.4.1.R2018072501版本
    2)修改比较大于时double使用了longValue()方法导致的BUG
V1.5.0.R2019010101
    1)替换为zhiqim_zml名称
    2)替换zhiqim_kernel_v1.5.0_r2019010101的库
    3)修改Every为Interval,删除Tasker改为实现Task等修改
    4)执行程序和源码分开打包
V1.5.1.R20190528
    1)整理为V1.5.1,使用ZhiqimKernelV1.5.1.R20190528版本
V1.5.2.R20190927
    1)整理为V1.5.2,使用ZhiqimKernelV1.5.2.R20190927版本
    2)对内容中包括"}"和"/>"的使用&ccb;和&sgt;替换,防止在解析字符串时错误
V1.6.0.R20210401
    1)修改软件开源协议为木兰宽松许可证, 第2版
    2)源码打包到zhiqim_zml.jar中,不发布纯源码包,使用zhiqim_kernel的V1.6.0.R20210401版本
    3)对内容中包括"}"和"/>"的作简单检查,检查双引号是否成对,不成对的认为当前在字符串中,继续向后查找直到成对或结束报错
V7.0.1.R20210701
    1)修改版本号为V7,表示该版本以JDK7为基准
    2)从kernel迁移extend类到zml中
V8.0.1.R20210708
    1)修改版本号为V8,表示该版本以JDK8为基准,同时V7采用分支jdk7
    2)增加BigInteger,BigDecimal两个类到java标准类中
V8.0.3.R20220202
    1)根据8.0.3的kernel进行调整
V8.0.4.R20230310
    1)修复_Negative int和float未支持问题
    2)修复_For和_If嵌套是有ReturnException,捕捉后转化为返回值方式
    3)根据8.0.4的kernel进行调整
V8.0.5.R20230618
    1)根据8.0.5的kernel进行调整
    2)修改<#def/>为<#top/>更好理解,并支持top定义变量和执行函数两种
V8.0.6.R20240718
    1)根据8.0.6的kernel进行调整,AnAlias有改动,兼容可能有问题