博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Webit Script 1.5 发布,java模板引擎
阅读量:6890 次
发布时间:2019-06-27

本文共 1822 字,大约阅读时间需要 6 分钟。

  hot3.png

      距Webit Script 第一个版本 0.8 释出以来,第一代 Webit Script 已经有一年整的时间,今天我们发布1.5,作为第一代的最后一个大版本。

      为第一代画上一个完美的句号,我们在1.5版本上下了很大工夫,最明显的就是核心jar包体积减少至296.8 KB,

其实我们真的新加了一些特性:

  • lambda 表达式,以及 lambda 风格的 for 循环( 

  • 可导出模版内函数并在外部执行( )

  • 断点调试接入支持(详见

  • resource 支持设置偏移(详见

  • 新增脚本内Void 类型,使之不会在使用不当的时候产生输出

  • ALU 优化,并增加对 char 、BigInteger 、 BigDecimal 的支持

同时修复了 1.4.2 中出现的一些问题:

  • map初始值包含负数key 以及switch 包含负数 case 导致解析失败

  • props 缺失导致的空指针异常

  • 特殊情况下 Context.exportTo(map) 的空指针异常

体积缩小主要因为以下几个方面:

  • 大幅度精简内置的 ASM 和 jodd-props

  • lib-assert 移至 tools

  • servlet 模块从核心模块中分离

  • 变量池改为线性池,提升了不少性能

  • 移除 filter 接口,使用现有的reolver能更好的代替解决问题

  • function/import/include 执行时 使用父context,不再创建新的context

  • 其他大量的 流程/代码 的 优化/简化

现在说一下升级需要注意的地方:(相对于1.4.2)

  • 创建Engine 推荐使用 Engine.create(..)  代替 Engine.createEngine(..)

  • KeyValuesMethodDeclareIterBag(前称: SimpleBag) 移至 lang 包,如果用到,需要修改成新的类路径

  • Props 精简成了单个类,类路径也从 webit.script.util.props.Props 改成了webit.script.util.Props

  • asm 模块配形式更改:我们将asm解耦合,之前的‘enableAsm’配置已不再生效,缺省仍然开启ASM,如果需要禁用ASM可在配置文件添加

    nativeFactory   = webit.script.core.NativeFactoryresolverManager = webit.script.resolvers.ResolverManager

    注:如果需要,配置之后,可以从核心jar包中移除webit.script.asm

  • 配置文件更改:我们统一把设置文件和模块配置文件后缀统一叫做 *.wim, 缺省配置文件更名成default.wimdefault-servlet.wim需要注意的是 WebEngine 缺省加载文件变更为 /WEB-INF/webpage.wim

  • 另外,不再建议使用 this  super,因为我们计划在2.0版本中新增类型声明,它们将会有新的语义

第三方支持的变更:

  • servlet模块独立出核心,所以你需要额外添加webit-script-servlet.jar (使用maven库的用户不用担心此问题,对于自管理jar的用户的反馈,可能会提供合适的合并的单一jar)

  • 统一缩短了命名,从之前的 WebitScript* 更名为 Webit* , 新的命名例如:WebitRenderWebitResultWebitRenderFactory

  • 对于 jodd madvoc 的支持:我们把3.5之后的支持作为缺省支持,包名跟改为webit.script.support.jodd3

性能测试:@kiang 提供的 teb,

//TODO: 待补充

关于 Webit Script 2: SPI & API 不会有大的改动,丰富语法,添加更多语法糖,计划嵌入式设备版,整理并提供较为体系的类库

最后感谢 @模板Geeker 群各位小伙伴提供的帮助,特别感谢:@Sept(群主) @sub (jetbrick) @kiang(teb/ebm/BSL)

PS: 如果有任何问题、意见、建议,欢迎通过OSC反馈

PPS: 联系时,直接说问题,请省略客套话

转载于:https://my.oschina.net/zqq90/blog/309322

你可能感兴趣的文章
application
查看>>
查看端口使用状况
查看>>
spring中加载xml配置文件的方式 .
查看>>
ruby参考
查看>>
斐波那契数列c语言实现
查看>>
emacs使修改的配置文件立即生效方法
查看>>
查询表中没有的字段信息
查看>>
stm32 使用 printf 串口输出 配置
查看>>
java 同步锁 synchronized 死锁 lock锁 jion 线程结束
查看>>
jsf开发心得(3)-jsf应用中css运用背景图片显示不了的问题
查看>>
IOS UIAlertController 弹出框中添加视图(例如日期选择器等等)
查看>>
ubuntu 12.04 开启root
查看>>
WAR包制作
查看>>
XSS
查看>>
Java 线程学习
查看>>
JDK容器学习之List: CopyOnWriteArrayList,ArrayList,LinkedList对比
查看>>
JDK容器学习之LinkedHashMap (一):底层存储结构分析
查看>>
acl_cpp 编程之 xml 流式解析与创建
查看>>
Web端开发发展历程简单概述
查看>>
无聊的函数和方法之间的区别讨论
查看>>