PageSourceSearch

http://ibeetl.com/assets/index.html-DcdSsXp6.js

js ibeetl.com collected 2026-10-03 23:19:30 UTC 14,828 bytes, 37 lines download raw bytes

1import{_ as e,c as a,b as n,o as p}from"./app-CNefOTx1.js";const i={};function l(t,s){return p(),a("div",null,s[0]||(s[0]=[n(`<p>Beetl作者:李家智(闲大赋) &lt;<a href="mailto:[email protected]" target="_blank" rel="noopener noreferrer">[email protected]</a>&gt;</p><h2 id="什么是beetl" tabindex="-1"><a class="header-anchor" href="#什么是beetl"><span>什么是Beetl</span></a></h2><p>Beetl( 发音同Beetle ) 目前版本是3.19,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。同时,Beetl具备引擎可定制性,可以打造自己的模板引擎。总得来说,它的特性如下:</p><ul><li><p>功能完备:作为主流模板引擎,Beetl具有相当多的功能和其他模板引擎不具备的功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。</p></li><li><p>非常简单:类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持html 标签,使得开发CMS系统比较容易</p></li><li><p>超高的性能:Beetl 远超过主流java模板引擎性能(引擎性能5-6倍于FreeMarker,2倍于JSP。参考附录),而且消耗较低的CPU。</p></li><li><p>易于整合:Beetl能很容易的与各种web框架整合,如Spring MVC,SpringBoot,ACT.JFinal,Struts,Nutz,Jodd,Servlet等。</p></li><li><p>扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包。</p></li><li><p>模板引擎可以个性化定制,比如定制语法特性,定制语法实现。</p></li></ul><p>Beetl 与其他模板引擎不同之处在于他内核是脚本引擎,因此直接支持脚本计算,可以实现</p><ul><li>脚本引擎/规则引擎</li><li>表达式引擎</li><li>支持在线调试功能</li></ul><h2 id="小白如何开始" tabindex="-1"><a class="header-anchor" href="#小白如何开始"><span>小白如何开始</span></a></h2><ul><li>访问在线模板引擎 http://ibeetl.com/beetlonline/</li><li>如果把Beetl当着脚本引擎,访问 http://ibeetl.com/beetlonline/script.html</li><li>需要通读基本用法,大部分都是讲解语法,而语法跟js很接近,所以可以快速预览,但Beetl是针对模板设计, 所以像安全输出,标签和html标签,全局变量,临时变量和共享变量,布局技术,以及直接调用java代码等还需要认真读一遍。</li><li>如果从事web开发,还需要阅读web集成里的第一节“web提供的全局变量”,如果web里还使用ajax技术,可以阅读“整合ajax的局部渲染技术”。</li><li>有任何问题,推荐在 https://gitee.com/xiandafu/beetl/issues 提问,我每天都会关注,这里的issues能激励我继续维护Beetl</li></ul><h2 id="资深如何开始" tabindex="-1"><a class="header-anchor" href="#资深如何开始"><span>资深如何开始</span></a></h2><ul><li><p>访问在线模板引擎 http://ibeetl.com/beetlonline/</p></li><li><p>如果把Beetl当着脚本引擎,访问 http://ibeetl.com/beetlonline/script.html</p></li><li><p>阅读和调试源码,以及相关单元测试运行和调试</p></li></ul><h2 id="模板性能" tabindex="-1"><a class="header-anchor" href="#模板性能"><span>模板性能</span></a></h2><p>作为模板引擎的性能 ,Score越大越好 https://gitee.com/xiandafu/beetl/tree/master/template-benchmark</p><div class="language- line-numbers-mode" data-ext="" data-title=""><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>Benchmark              Mode  Cnt       Score      Error  Units</span></span>
2<span class="line"><span>Beetl.benchmark       thrpt   10  163259.294 ±  881.253  ops/s</span></span>
3<span class="line"><span>Enjoy.benchmark       thrpt   10  146012.967 ± 2158.580  ops/s</span></span>
4<span class="line"><span>Freemarker.benchmark  thrpt   10   45228.490 ±  185.590  ops/s</span></span>
5<span class="line"><span>Handlebars.benchmark  thrpt   10   42875.302 ±  189.893  ops/s</span></span>
6<span class="line"><span>Rocker.benchmark      thrpt   10   95740.184 ±  513.397  ops/s</span></span>
7<span class="line"><span>Thymeleaf.benchmark   thrpt   10   12981.396 ±  130.663  ops/s</span></span>
8<span class="line"><span>Velocity.benchmark    thrpt   10   14120.852 ±  291.371  ops/s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="表达式性能" tabindex="-1"><a class="header-anchor" href="#表达式性能"><span>表达式性能</span></a></h2><p>作为脚本语言,表达式语言的性能 ,Score越大越好 https://gitee.com/xiandafu/beetl/tree/master/express-benchmark</p><div class="language- line-numbers-mode" data-ext="" data-title=""><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>Benchmark               Mode  Cnt          Score          Error  Units</span></span>
9<span class="line"><span>Aviator.forExpresss    thrpt    5     501300.085 ±    42824.080  ops/s</span></span>
10<span class="line"><span>Aviator.ifExpresss     thrpt    5    3787821.461 ±   126020.429  ops/s</span></span>
11<span class="line"><span>Aviator.simpleExpress  thrpt    5    3936340.996 ±    73374.389  ops/s</span></span>
12<span class="line"><span>Beetl.forExpresss      thrpt    5    1338770.299 ±    52497.190  ops/s</span></span>
13<span class="line"><span>Beetl.ifExpresss       thrpt    5    4296662.629 ±   144833.816  ops/s</span></span>
14<span class="line"><span>Beetl.reflect          thrpt    5      91948.475 ±    24820.670  ops/s</span></span>
15<span class="line"><span>Beetl.simpleExpress    thrpt    5    3637048.580 ±   208029.652  ops/s</span></span>
16<span class="line"><span>
16Groovy.forExpresss     thrpt    5     252549.783 ±     4250.116  ops/s</span></span>
17<span class="line"><span>Groovy.ifExpresss      thrpt    5     274622.265 ±     4591.017  ops/s</span></span>
18<span class="line"><span>Groovy.simpleExpress   thrpt    5     265044.153 ±    11326.922  ops/s</span></span>
19<span class="line"><span>Jexl3.forExpresss      thrpt    5     786773.898 ±    10419.682  ops/s</span></span>
20<span class="line"><span>Jexl3.ifExpresss       thrpt    5    4202306.490 ±    30129.805  ops/s</span></span>
21<span class="line"><span>Jexl3.simpleExpress    thrpt    5    3372108.774 ±   215486.204  ops/s</span></span>
22<span class="line"><span>JfireEL.ifExpresss     thrpt    5   32117578.964 ±   527020.236  ops/s</span></span>
23<span class="line"><span>JfireEL.simpleExpress  thrpt    5   24189543.412 ±   368783.395  ops/s</span></span>
24<span class="line"><span>Liquor.forExpresss     thrpt    5  133415280.514 ±  7403665.267  ops/s</span></span>
25<span class="line"><span>Liquor.ifExpresss      thrpt    5  142671515.534 ±  2569369.295  ops/s</span></span>
26<span class="line"><span>Liquor.simpleExpress   thrpt    5  131626067.420 ±  1391417.428  ops/s</span></span>
27<span class="line"><span>Magic.forExpresss      thrpt    5      78293.797 ±     5757.270  ops/s</span></span>
28<span class="line"><span>Magic.ifExpresss       thrpt    5    8289531.268 ±   108521.742  ops/s</span></span>
29<span class="line"><span>Magic.simpleExpress    thrpt    5    5483078.794 ±   102774.920  ops/s</span></span>
30<span class="line"><span>Mvel.forExpresss       thrpt    5      19791.976 ±      913.688  ops/s</span></span>
31<span class="line"><span>Mvel.ifExpresss        thrpt    5     212241.434 ±     4588.556  ops/s</span></span>
32<span class="line"><span>Mvel.simpleExpress     thrpt    5     289372.025 ±     5343.856  ops/s</span></span>
33<span class="line"><span>Spel.ifExpresss        thrpt    5   17001870.991 ±  1104612.166  ops/s</span></span>
34<span class="line"><span>Spel.simpleExpress     thrpt    5   16854500.373 ±  1020142.253  ops/s</span></span>
35<span class="line"><span>WastEl.forExpresss     thrpt    5  539086848.932 ± 16033762.932  ops/s</span></span>
36<span class="line"><span>WastEl.ifExpresss      thrpt    5  553963092.029 ±  8708085.274  ops/s</span></span>
37<span class="line"><span>WastEl.simpleExpress   thrpt    5  493929991.021 ±  7826211.390  ops/s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="联系作者" tabindex="-1"><a class="header-anchor" href="#联系作者"><span>联系作者</span></a></h2><ul><li>作者:闲.大赋 (李家智)等(参考附录查看代码贡献者)</li><li>源码主页:https://gitee.com/xiandafu/beetl</li><li>最佳联系方式: https://gitee.com/xiandafu/beetl/issues</li><li>邮件:<a href="mailto:[email protected]" target="_blank" rel="noopener noreferrer">[email protected]</a></li><li>QQ技术交流群:219324263 636321496 ,作者在群里,但平时不常用</li></ul><h2 id="第三方提供的免费视频" tabindex="-1"><a class="header-anchor" href="#第三方提供的免费视频"><span>第三方提供的免费视频</span></a></h2><p>以一个博客项目,实战使用</p><p>
37项目git地址:https://gitee.com/gavink/beetl-blog</p><p>视频地址:下载下来会更清晰,视频比较长,可使用倍速看</p><p>百度网盘下载: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取码: 68im</p><p>在线播放地址:bilibili (可以调节清晰度): https://www.bilibili.com/video/av36278644/?p=9</p><p>博客目录:https://my.oschina.net/u/1590490?tab=newest&amp;catalogId=6214598</p><h2 id="beetl与vue-react框架的冲突" tabindex="-1"><a class="header-anchor" href="#beetl与vue-react框架的冲突"><span>Beetl与Vue,React框架的冲突</span></a></h2><p>模板是一种设计模式,只要这种设计模式存在,就有Beetl的用武之地。Beetl可以用于</p><ul><li><p>动态页面生成,网站,后台管理系统等</p></li><li><p>静态内容生成,比如互联网世界的大部分静态网页的生成</p></li><li><p>短信,微信,邮件内容等生成</p></li><li><p>二进制文档生成,比如PDF,Word (需要通过模板生成中间文本格式,如markdown,xml,然后通过工具转成二进制)</p></li></ul><p>Vue,React等JS框架符合现在前后端分离,但不代表所有项目,所有需求都是这样。除非你只定位自己是搞前后端分离的</p><p>一个项目,既可以用上Beetl,也可以用上Vue,比如Beetl+Vue,或者使用Beetl 完成项目中的其他需求,比如适合动态业务的脚本引擎,或者静态内容生成。</p><p><strong>Beetl核心是脚本引擎,因此不像其他JAVA模板引擎,只能提供模板功能,Beetl还可以提供脚本,规则引擎,可以访问</strong></p><p><strong>http://ibeetl.com/beetlonline/script.html 了解Beetl的脚本和Debug功能</strong></p>`,32)]))}const c=e(i,[["render",l],["__file","index.html.vue"]]),o=JSON.parse('{"path":"/notes/beetl/9rcjbi39/","title":"Beetl 3中文文档","lang":"en-US","frontmatter":{"title":"Beetl 3中文文档","createTime":"2025/02/9 19:51:08","permalink":"/notes/beetl/9rcjbi39/","description":"Beetl作者:李家智(闲大赋) <[email protected]> 什么是Beetl Beetl( 发音同Beetle ) 目前版本是3.19,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。同时,Beetl具备引擎可定制性,可以打造自己的模板引擎。总得来说,它的特性如下:...","head":[["meta",{"property":"og:url","content":"http://ibeetl.com/notes/beetl/9rcjbi39/"}],["meta",{"property":"og:site_name","content":"闲大赋"}],["meta",{"property":"og:title","content":"Beetl 3中文文档"}],["meta",{"property":"og:description","content":"Beetl作者:李家智(闲大赋) <[email protected]> 什么是Beetl Beetl( 发音同Beetle ) 目前版本是3.19,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。同时,Beetl具备引擎可定制性,可以打造自己的模板引擎。总得来说,它的特性如下:..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2025-02-09T08:30:21.000Z"}],["meta",{"property":"article:modified_time","content":"2025-02-09T08:30:21.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Beetl 3中文文档\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-02-09T08:30:21.000Z\\",\\"author\\":[]}"]]},"headers":[],"readingTime":{"minutes":5.03,"words":1508},"git":{"updatedTime":1739089821000,"contributors":[{"name":"lijiazhi","username":"lijiazhi","email":"[email protected]","commits":1,"avatar":"https://gravatar.com/avatar/1b5114831459724ad4acc394423b4b48ecfa4a7e0659fbe07a0ce5181a1050a7?d=retro"}]},"autoDesc":true,"filePathRelative":"notes/beetl/readme.md"}');export{c as comp,o as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.