Wit 2.0.0-beta 发布,Java 模板引擎(原 Webit Script)

zqq90
 zqq90
发布于 2017年05月30日
收藏 12

Febit Wit (原 Webit Script )是一个 Java 平台下的模板引擎,语法类似 JavaScript,支持自定义函数,全局变量,Lambda 表达式,核心模块轻巧(2.0.0-beta 版本核心 jar 为 327.7 KB),无第三方依赖,采用BSD开源协议。

出来炸个尸!发布一下 2.0.0-beta !

<dependency>
    <groupId>org.febit.wit</groupId>
    <artifactId>wit-core</artifactId>
    <version>2.0.0-beta</version>
</dependency>

啥?不是正式版?下个版本应该会是 2.0.1-beta 或 2.1.0-beta!没有正式版!惊不惊喜!意不意外!
主要是让你踩到坑也说得过去:

  • 修复了自定义带参数的全局函数可能会有的并发问题(1.5 版本因优化过度引入)

  •  `#` 不再用来代替`function`,使用 lambda 表达式同样清爽: `(x,y,x)->{...}`

  • 取消 `@` 操作符,实在是太丑了,下一步会考虑增强一下`.~`,支持 override 什么的

  • 各种改,就连 API 也不放过

这么做, 其实是不想背一些大厂的同学的历史包袱,始终维持一个健康的状态,并希望小伙伴们能积极参与进来,哪怕过来补充个测试,代码量并不大,结构上还说得过去

除了挖坑之外,还做了些无聊的事情:

  • 改了个包名

  • 改了个项目名: wit,读 `煟鋱`,嗯,两个音节,交流起来比较方便

  • 最低要求 java 1.7

  • 增强了一下配置

  • 不知道为啥在`IoC`上花了不少 commits

  • 为了 sonar.oschina.net 上的一点儿虚荣,把内置的 asm 拆到了主包之外,Parser 和 Lexer 放在构建的时候生成

另外,还有一些:

  • 一些见不得人的拼写错误

  • Lambda 支持空参数 `()->"Hello Lambda!"`, 单个参数时也可以括起来了 `(x)->x`

  • 支持了批量赋值: `[b, a] = [a, b];` 这样就可以交换 ab 的值; 而且还可以 `[arr[0],arr[1],arr[2],arr[3]] = 1..4;` 或者 `var [a,b]= ["a", "b"];` 或者 函数返回多个返回值 `[a, b] = (x -> [1,2])();`([摊手] 其实就是返回个数组)

  • 小数运算精度上的小修改, 但是还不够完善, 要求高的小伙伴还是通过自定义函数来满足需求吧, 否则太重量级了

  • 支持 `try-catch-finaly`

  • 新增操作符`.~`来调用成员函数,例如: `map.~put(k, v)`, 支持多态(一定程度)

  • 新增 JavaNativeUtil 方便导入工具类中的方法, 支持多态(一定程度)

  • Resource支持 `codeFirst` 模式,好像很难解释。。就是最开始直接写逻辑而不需要 `<%` 开头,方便当脚本引擎使用的同学

变动的地方可不止上面这些!这个是后面两个 `0` 的版本!想什么都不改直接升上来是不可能的,所以,你真的不该考虑进来看 [滑稽脸]
最后,希望不会坑到你。。。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Wit 2.0.0-beta 发布,Java 模板引擎(原 Webit Script)
加载中

最新评论(10

紫电清霜
紫电清霜
还真是,我也觉得造轮子可以更好的了解造轮子会遇上什么困难,以及如何解决😋
TGVvbmFyZA
TGVvbmFyZA

引用来自“阿cat”的评论

其实后段模板引擎没有什么优势了

引用来自“zqq90”的评论

同意,4前年开始做的时候就已经没有什么优势了,只是觉得有些场景可以做的更简单

引用来自“Leo_”的评论

可否讲解一下你是如何做语法解析的?

引用来自“zqq90”的评论

jflex + java_cup 分别是词法分析,语法分析,得到语法树事情就好办多了

引用来自“Leo_”的评论

好吧 以为你自己写的解析器呢 😝

引用来自“zqq90”的评论

😳 只是想开一个小饭馆,不至于开个农场连牛羊一起养了
又不是没有自己种菜养牛羊的餐馆?主要看思路。
zqq90
zqq90

引用来自“阿cat”的评论

其实后段模板引擎没有什么优势了

引用来自“zqq90”的评论

同意,4前年开始做的时候就已经没有什么优势了,只是觉得有些场景可以做的更简单

引用来自“Leo_”的评论

可否讲解一下你是如何做语法解析的?

引用来自“zqq90”的评论

jflex + java_cup 分别是词法分析,语法分析,得到语法树事情就好办多了

引用来自“Leo_”的评论

好吧 以为你自己写的解析器呢 😝
😳 只是想开一个小饭馆,不至于开个农场连牛羊一起养了
TGVvbmFyZA
TGVvbmFyZA

引用来自“阿cat”的评论

其实后段模板引擎没有什么优势了

引用来自“zqq90”的评论

同意,4前年开始做的时候就已经没有什么优势了,只是觉得有些场景可以做的更简单

引用来自“Leo_”的评论

可否讲解一下你是如何做语法解析的?

引用来自“zqq90”的评论

jflex + java_cup 分别是词法分析,语法分析,得到语法树事情就好办多了
好吧 以为你自己写的解析器呢 😝
zqq90
zqq90

引用来自“阿cat”的评论

其实后段模板引擎没有什么优势了

引用来自“zqq90”的评论

同意,4前年开始做的时候就已经没有什么优势了,只是觉得有些场景可以做的更简单

引用来自“Leo_”的评论

可否讲解一下你是如何做语法解析的?
jflex + java_cup 分别是词法分析,语法分析,得到语法树事情就好办多了
zqq90
zqq90

引用来自“山哥”的评论

为什么要重复发明这么多轮子呢
这么说吧: 让我知道造好一个轮子也不容易
TGVvbmFyZA
TGVvbmFyZA

引用来自“阿cat”的评论

其实后段模板引擎没有什么优势了

引用来自“zqq90”的评论

同意,4前年开始做的时候就已经没有什么优势了,只是觉得有些场景可以做的更简单
可否讲解一下你是如何做语法解析的?
山哥
山哥
为什么要重复发明这么多轮子呢
zqq90
zqq90

引用来自“阿cat”的评论

其实后段模板引擎没有什么优势了
同意,4前年开始做的时候就已经没有什么优势了,只是觉得有些场景可以做的更简单
MGL_TECH
MGL_TECH
其实后段模板引擎没有什么优势了
返回顶部
顶部