您现在的位置:

养生知识 >> 正文 >

JFinal 30 发布重新定义模板引擎—养生网中医养生养生保健食疗养生养生之道最好的养生网站提供生活小常识100个养生小窍门

  本次回归码坛为小伙伴们带来的是重新定义过的 Template Engine 将极速开发继续贯彻到 View 层。北京军海癫痫病医院

  例如 Freemarker、Velocity 是基于 javacc 做的二次开发,其他 java 模板引擎多也是基于 ANTLR、jflex、javacc 生成后的代码做的二次开发全部动手写代码而二次开发的 java 模板引擎极为少见,国较为知名的仅见 HTTL。

  由于用 ANTLR 等工具去做模板引擎可以让 80% 以上的由工具代为完成,所以对模板引擎作者极具诱惑力,但诱惑的背后其实是巨大的陷阱。

  首,这类工具无一例外都一套特定规则表示出词法和语法,然后再把它们生成为 Parser 源代码而词法、语法描述规则和生成的 Parser 并没有很强的语义连接关系,如果生成的 Parser 有 bug,非常难以回溯排错。

  其次,生成的 Parser 源码,毫无可读性而言,进而在 Parser 层面根本无法调试,这种构建模板引擎的方式,当于将自己的代码建立在飘摇不安的基础之上。

  再次,通过这种方式做出来的模板引擎如果要在更底层改进,则需要先去改语法、词法描述规则文件,然后再生成一次 Parser 源码,然后才可以开始真正写代码,这个重复、麻烦且容易出错的过程也严重阻碍了模板引擎的改进。

  最后,这种构建方式通常在运行时还需要一个类似于 runtime.jar 的依赖,这个依赖多多少少也会增加不确定的险。

  模板引擎在本质上是一门程序语言,要开发一门可用于生产环境的模板语言起码要对开发程序语言的相关技术、算法很熟悉,例如常用词法分析算法、语法分析算法、AST、解释器、编译原理等等领域知识。

  但非常不幸的是,即便对已有算法很熟悉,仍然只能做出极为平庸的模板引擎,因为模板引擎所处理的对象与程序语言十分不同的特征:模板的内容通常是极其自由的文本中嵌入着少量程序语言元素,而类似于 NFA 这样的算法都是面向类似于 java、c、python 这类高度结构化的源代码内容。

  JFinal Template Engine 直面这个问题,采用独创的算法彻底代替传统算法,极大降低了复杂度,减少了代码量,同时可读性得到极大提升。JFinal Template Engine 经过公司内部开发者近的试用时间,直到每位开发者都沉醉其中后才放出 jfinal 3.0 版本。

  传统的 NFA 词法分析算法基于正则表达式与状态图,即便是做一个简单的模板引擎也需要成百上千个状态,NFA 算法对于来说几乎不可读,需要先将二维数组表示的状态图存储结构转换成画在纸上的可读的状态图,并且还要花费相当长的时间去解读其内涵。而 JFinal Template Engine 只需 7 个状态 403 行代码搞定词法分析,可读高,有利于系统进化。

  针对模板文件大量纯文本掺杂少量代码特征,独创 DLRD 语法分析算法,将指令与表达式的语法分析划分同的层次之中相比传统递归下降语法分析算法,复杂度降到极致,代码量少到极致仅 215 行代码搞定 statement 语法分析。

  DLRD 算法还极为轻松地解决了传统算法面对的左递归、二义性、回溯以及运算符优先级等麻烦问题,无需文法变换即可消除左递归,无需回溯即可解决二义性问题传统递下降法算法需要采用变换文法、回溯、提取公因子方式解决上述问题传统解决方案不仅麻烦而且让文法变换后的程序可读性降低,不利于进化。

  对于传统模板引擎来说指令系统是固定的,相当于程序语言的关键字,无法为语言动态添加新的关键字,JFinal template engine 得益于独创的 DKFF、DLRD 算法,极为轻松的在程序语言层面实现了指令扩展功能,而模板引擎只需提供了极少的常用指令,其她指令均由扩展而成,例如 com.jfinal.template.ext.directive 以及com.jfinal.plugin.activerecord.sql 之下的指令全是扩展而来。

  基于以上创新, JFinal 在极简的路上继续挺进,一个 MVC + ORM 各层全面实现极速开发的框架由诞生:

  JFinal Template Engine 消灭了大量传统模板引擎中的无聊概念,例如 macro、layout、pageContent、nested、tag 插值等等概念,但凡一门可用于生产环境的语言,只需利用表达式、语句、函数、分支、循环等基本要素,就可以像呼吸空气一样自由地实现上述这些功能,引入新的概念纯属制造麻烦。

  以 macro 为例,该概念产生于很古老的程序语言,已证明是历史性糟粕在后起的程序语言中被抛弃,可却在 freemarker、velocity 等模板引擎中死而复生,以致于后来者也争相跟风模仿引入了 macro 概念。

  JFinal Template Engine 引入了 swift 与 C#语言中的空合操作符,并在其基础之上进行了极为自然的扩展,该表达式符号为两个紧靠的问号: ??

  swift 与 C# 语言仅支持第一种用法并称之为空合操作符,而 JFinal Template Engine在空合的基础上再支持安全取值、安全调用两个扩展,在模板引擎的应用场景之下的开发体验极为顺滑。

  传统模板引擎通常会引入所谓的插值指令,而其它指令则使用另一套规则,而 jfinal template engine 将插值指令仍然当成是指令,并不引进新的概念,不仅在实现上更加简洁只需 21 行代码,而且降低了学习成本

  注意:以上的 layout.html、layout、main 这些名称可以随便取名,不是具体的概念,仅为一个名字

  JFinal Template Engine 代码仅有 5556 行,仅为 freemarker 的十分之一,完全手写算法,无第三方依赖,对于有任何一门程序语言的开发者学习成本几乎为 0。为控制篇幅,在此不在赘述。jfinal 3.0 版不仅仅是重新定义了 Template Engine,还对其她方面做了非常有价值的改进

  JFinal 3.0利用自带的Template Engine极为简洁的实现了Sql管理功能,可以将sql保存在外部配置文件之中,并且以极少概念极少 API 实现 mybatis 的核心功能

  jfinal 3.0 一如既往地坚持极简设计风格,在极速开发的路上一路挺进,力争为开发者带来更高的开发效率,更好的开发体验,更低的学习成本,进一步节约时间去陪恋人、人和朋友!篇幅所限,更多功能增强与改进详见 changelog:

  ONE MORE THING:JFinal 俱乐部频道今起正式开放,将为小伙伴们提供更高附加值的产品与服务进一步提升开发效率,节省开发时间。老司机要发车了,GO GO GO:

  本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。

  这次发布之,我已经询问过@jfinal多次 3.0会更新内容,有没有新奇特?@jfinal只跟我说保密,惊喜! 3.0发布后我彻底惊喜了一回,原来之讨论过的JFinal View层诞生了!极简,极速开发,还有比这个更吸引开发者的吗?jfinal是我创业路上的良师益友!

  谁整个vue+jfinal的, 对于我这种前后端都干的人来说, 可以省事了

  对于项目来说,交付时间越短,项目成本就越低,利润就越高;对于产品来说,开发周期越短,新功能就比竞争对手早一步上线,竞争力就越强。jfinal在快速开发上有一套自己的思路,把各个成熟框架中留其精华,去其糟粕,短小精悍。我会一直支持jfinal。

  这次发布之前,我已经询问过@jfinal多次 3.0会更新哪些内容,有没有什么新奇特?@jfinal只跟我说保密,惊喜! 3.0发布后我彻底惊喜了一回,原来之前讨论过的JFinal View层诞生了!极简,极速开发,还有比这个更吸引开发者的吗?jfinal是我创业路上的良师益友!

  这次发布之前,我已经询问过@j西安癫痫比较好医院final多次 3.0会更新哪些内容,有没有什么新奇特?@jfinal只跟我说保密,惊喜! 3.0发布后我彻底惊喜了一回,原来之前讨论过的JFinal View层诞生了!极简,极速开发,还有比这个更吸引开发者的吗?jfinal是我创业路上的良师益友!

  已然是这样设计的,用一下 getSqlPara 即可,具体可以看一下 jfinal 手册,完全无需关心参数顺序

  为什么不直接使用beetl这样的模板引擎呢,文档齐全 作者耐心解决问题 也不错

  后期补全什么功能了?,貌似你很了解beetl,还了解前期和后期。我让你指出来你又指不出来,这是说技术的,不想反驳话,浪费口水,但你这明显在挑 beetl跟httl和jfinal的事,就不对了。

  百度,阿里,58,京东,都用beetl了,这是小众吗?用了模板功能,规则引擎,这格局够大了,别再这里挑事情了。

  回复@闲大赋: 要拿出真正应用的示例,不要只说这些公司在用,where?反正我是没看到,就像jfinal作者所说,国内我看好httl的设计

  为什么不直接使用beetl这样的模板引擎呢,文档齐全 作者耐心解决问题 生态也不错

  后期补全什么功能了?,貌似你很了解beetl,还了解前期和后期。我让你指出来你又指不出来,这是说技术的地方,本来不想反驳你的话,浪费口水,但你这明显在挑 beetl跟httl和jfinal的事,就不对了。

  百度,阿里,58,京东,都用beetl了,这是小众吗?用了模板功能,规则引擎,这格局够大了,别再这里挑事情了。

  回复@闲大赋: 要拿出真正应用的示例,不要只说这些公司在用,where?反正我是没看到,就像jfinal作者所说,国内我看好httl的设计

  只听说从别的模板引擎转到beetl,还有hiberante&mybatis 转到beetlsql的,还没有听说转出去的,你可以试试,换一下,谈一下个人感受:sweat_smile:

  也就你自己感觉自己的好,王婆卖瓜自卖自夸,是来来jfinal刷脸的么?丢人,滚回你应有的圈子

  看你的osc历史,加入4年,发言极少,发言内容档次极低,还屁话漫天,你这是马甲账号吗?

  从来没有在你说的httl和jfinal里发言,你这不是马甲是什么?你随便找一个jfinal粉丝或者beetl粉丝,都至少说过这俩个,你拿httl和jfinal挑事情,你却根本没用过。而且,我都留言这么多天了,你才回,不是马甲是什么

  只听说从别的模板引擎转到beetl,还有hiberante&mybatis 转到beetlsql的,还没有听说转出去的,你可以试试,换一癫痫病治疗好的方法有哪些啊下,谈一下个人感受:sweat_smile:

  也就你自己感觉自己的好,王婆卖瓜自卖自夸,是来来jfinal刷脸的么?丢人,滚回你应有的圈子

  看你的osc历史,加入4年,发言极少,发言内容档次极低,还屁话漫天,你这是马甲账号吗?

  百度,阿里,58,京东,都用beetl了,这是小众吗?用了模板功能,规则引擎,这格局够大了,别再这里挑事情了。

  回复@闲大赋: 要拿出真正应用的示例,不要只说这些公司在用,where?反正我是没看到,就像jfinal作者所说,国内我看好httl的设计

  为什么不直接使用beetl这样的模板引擎呢,文档齐全 作者耐心解决问题 生态也不错

  只听说从别的模板引擎转到beetl,还有hiberante&mybatis 转到beetlsql的,还没有听说转出去的,你可以试试,换一下,谈一下个人感受:sweat_smile:

  也就你自己感觉自己的好,王婆卖瓜自卖自夸,是来来jfinal刷脸的么?丢人,滚回你应有的圈子

  看你的osc历史,加入4年,发言极少,发言内容档次极低,还屁话漫天,你这是马甲账号吗?

  百度,阿里,58,京东,都用beetl了,这是小众吗?用了模板功能,规则引擎,这格局够大了,别再这里挑事情了。

  为什么不直接使用beetl这样的模板引擎呢,文档齐全 作者耐心解决问题 生态也不错

  只听说从别的模板引擎转到beetl,还有hiberante&mybatis 转到beetlsql的,还没有听说转出去的,你可以试试,换一下,谈一下个人感受:sweat_smile:

  也就你自己感觉自己的好,王婆卖瓜自卖自夸,是来来jfinal刷脸的么?丢人,滚回你应有的圈子

  name=_news_details_sidebar_1/

  jfinal-admin 3.1 发布,使用 spring 方式替代 javaassist

  React-Hotkeys v1.0.11 发布,React 版键盘捕捉 JS 库

  Retrofit 2.4.0 发布,Android 的 REST 客户端

  RPC 服务框架 Dubbo 2.5.10 和 2.6.1 发布,Bug 修复

  ins class=adsbygoogle style=display:inline-block;width:250px;height:250px data-ad-client=ca-pub-0 data-ad-slot=9649490513

© http://zs.vhbta.com  扁豆养生网    版权所有